Python 相当于';在';用于比较两个Numpy阵列

Python 相当于';在';用于比较两个Numpy阵列,python,numpy,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, Fal

在我可以使用的纯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])
。。。尽管这不起作用


有没有一种功能或方法可以实现这一点?如果不是,最简单的方法是什么?

您正在比较两种截然不同的东西。对于纯Python列表,您有一个int和一个list。使用numpy,您有两个numpy阵列。如果将a更改为int,则它在numpy中的工作方式与预期相同

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

还要注意的是,用两个列表显示的结果非常直观。返回的数组显示,对于数组a中的每个值,它是否在b中?5和7是,其他的不是。因此得到了给定的结果。

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

您正在寻找:


是的,两个列表的情况是直观的,但是这不是Numpy的行为方式(尽管我希望如此!)-我编辑了“问题”以使其更清楚…好的,我看到您提供的代码不起作用。误读。尽管获得了授权,但b中的a对numpy的作用与对Python列表的作用相同。
>>> 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)