假设我有以下两个列表:
l = [[], [1]]
m = [0, 1]
如果我检查一下元素是否在列表中:
>>> np.array(m[1]) == 1
True
>>> 1 in np.array(l)[1]
True
这按预期工作。
但是,如果我使用numpy logical_and
运算符,则会失败:
>>> np.logical_and(np.array(m) == 1, 1 in np.array(l))
array([False, False])
为什么数组中的两个位置都被评估为False
?
目标是逐个元素地评估这些形式的列表。并且,根据文档,np.logical_and
用于“按元素计算x1和x2的真值。”
由于l是列表的列表,所以我正在使用in
运算符来测试按元素进行的比较。
因此,我希望输出>>> np.logical_and(np.array(m) == 1, 1 in np.array(l))
成为
array([False, True])
毕竟,[1]
只是np.array(l)
中的一个元素:
>>> for i in np.array(l):
... print(i)
...
[]
[1]
所以只分析您的代码
np.array(m) == 1
>>> [False True]
1 in np.array(l)
>>> False
您基本上是将False与[False True]