我可以使用纯粹的,未经过滤的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])
......虽然这不起作用。
是否有实现这一目标的功能或方法?如果不是最简单的方法是什么?
答案 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