Python 逻辑_和与列表列表一起使用
假设我有以下两个列表:Python 逻辑_和与列表列表一起使用,python,numpy,boolean,Python,Numpy,Boolean,假设我有以下两个列表: l = [[], [1]] m = [0, 1] 如果我检查元素是否在列表中: >>> np.array(m[1]) == 1 True >>> 1 in np.array(l)[1] True 这正如预期的那样有效 但是,如果我使用numpylogical\u和运算符,则会失败: >>> np.logical_and(np.array(m) == 1, 1 in np.array(l)) array([False
l = [[], [1]]
m = [0, 1]
如果我检查元素是否在列表中:
>>> np.array(m[1]) == 1
True
>>> 1 in np.array(l)[1]
True
这正如预期的那样有效
但是,如果我使用numpylogical\u和
运算符,则会失败:
>>> np.logical_and(np.array(m) == 1, 1 in np.array(l))
array([False, False])
为什么数组中的两个位置都被计算为False
目标是按元素评估这些表单的列表。并且,根据文档,np.logical_和
用于“计算x1和x2元素的真值”
因为l是一个列表列表,所以我使用操作符中的来测试元素级比较
因此,我期望np.logical_和(np.array(m)=1,np.array(l)中的1)的输出
将来
array([False, True])
毕竟,[1]
只是np.array(l)
中的一个元素:
所以只需分析你的代码
np.array(m) == 1
>>> [False True]
1 in np.array(l)
>>> False
你基本上是在比较假和[假真]
更新
如果希望输出为[False-True],则应使用逻辑\u或。您删除了[1]
s。这是故意的吗?np.array(l)Out[30]:false如果是故意的,那么在将np.logical_和引入图片之前,您应该先查看np.array(m)==1
和1在np.array(l)
中的单独输出。如果这是一个意外,那么这个问题应该被关闭,因为它是由于输入错误而发生的。不起作用:>>(np.logical_和(np.array(m)==1,[1]在np.array(l)))数组([False,False])
。。。另外,虽然[1]
是该元素(我完全同意!!),但测试是1是否在列表[1]
中。如果名单在名单上就不会了。我明白你的意思。也许你可以把这个单子展平<代码>导入itertools
然后在np.array中1(列表(itertools.chain.from_iterable(l))
返回True@bhaskarc已经回答了我的问题。我用logical\u或
来评估其他条件,并且正在处理类似的奇怪错误。原来我没有意识到元素的类型是:dtype=object
。
np.array(m) == 1
>>> [False True]
1 in np.array(l)
>>> False