我有两个数组
a = array([1,2,3])
b = array([2,7])
现在我想检查a的元素是否在b中 返回的答案应该是(False,True,False)。有没有使用函数的一些简单方法呢?
答案 0 :(得分:2)
使用标准python列表:
>>> a = [1, 2, 3]
>>> b = [2, 7]
>>> tuple(x in b for x in a)
(False, True, False)
假设你的array
函数返回一个同时支持迭代的对象和in
运算符,它应该是一样的。
答案 1 :(得分:2)
仅使用numpy:
>>> (a[:,None] == b).any(axis=-1)
(因此,我们将a
从(N,)
转换为(N,1)
数组,然后使用numpy的广播测试相等性。我们最终得到一个(N, M)
数组(假设b
的形状为(M,)
...),我们只需检查每行True
是否为any(axis=-1)
。
答案 2 :(得分:1)
这个怎么样:
>>> numpy.setmember1d(a, b)
array([False, True, False], dtype=bool)
更新,谢谢塞伯格。对于新版本的numpy,这是:
>>> numpy.in1d(a, b)
array([False, True, False], dtype=bool)
答案 3 :(得分:0)
嗯,这就是我用列表做的方式:
>>> a = [1, 2, 3]
>>> b = [2, 7]
>>> result = []
>>>
>>> for x in a:
... result.append(x in b)
...
>>> print result
[False, True, False]