相当于'in'用于比较两个Numpy数组

时间:2010-11-30 12:55:43

标签: python numpy

我可以使用纯粹的,未经过滤的Python,

>>> a = 9
>>> b = [5, 7, 12]
>>> a in b
False

我想为Numpy中的数组做类似的事情,即

>>> a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
>>> b = np.array([5, 7, 12])
>>> a in b
np.array([False, False, False, False, True, False, True, False, False, False])

......虽然这不起作用。

是否有实现这一目标的功能或方法?如果不是最简单的方法是什么?

3 个答案:

答案 0 :(得分:8)

您正在寻找in1d

>>> import numpy as np
>>> a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
>>> b = np.array([5, 7, 12])
>>> np.in1d( a, b)
array([False, False, False, False,  True, False,  True, False, False, False], dtype=bool)

答案 1 :(得分:1)

你正在比较两种非常不同的东西。使用纯Python列表,您有一个int和一个列表。有了numpy,你有两个numpy数组。如果你将a更改为int,那么它在numpy中按预期工作。

>>> a = 9
>>> b = np.array([5, 7, 12])
>>> a in b
False

另请注意,您使用两个列表显示的内容非常直观。返回的数组显示,对于数组a中的每个值,它是否在b中? 5和7是,其他则不是。因此给定的结果。

答案 2 :(得分:0)

如果要测试一个序列是否包含另一个序列,您可能希望实现某种字符串搜索算法。 Reference from Wikipedia