与列表一起使用逻辑和

问题描述 投票:0回答:1

假设我有以下两个列表:

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]
python numpy boolean
1个回答
0
投票

所以只分析您的代码

np.array(m) == 1 
>>> [False  True]
1 in np.array(l)
>>> False

您基本上是将False[False True]

© www.soinside.com 2019 - 2024. All rights reserved.