例如:我有a = np.array([123, 412, 444])
并且b = np.array([123, 321])
我想知道是否a
包含. 有这个简单的操作吗?在这种情况下,这是不正确的。b
你总是可以使用一组:
>>> a = numpy.array([123, 412, 444])
>>> b = numpy.array([123, 321])
>>> set(b) in set(a)
False
或者使用更新版本的 numpy:
>>> numpy.in1d(b,a)
array([ True, False], dtype=bool)
如果您只想要“答案”而不是数组:
>>> numpy.in1d(b,a).all()
False
或(最不希望的):
>>> numpy.array([x in a for x in b])
array([ True, False], dtype=bool)
循环在 numpy 数组上很慢,应该避免。
您可以使用设置差异来确定您要查找的内容。Numpy 有一个名为numpy.setdiff1d(ar1, ar2)的内置函数:
返回 ar1 中不存在于 ar2 中的排序后的唯一值。
您的案例示例:
>>> a = np.array([123, 412, 444])
>>> b = np.array([123, 321])
>>> diff = np.setdiff1d(b, a)
>>> print diff
array([321])
>>> if diff.size:
>>> print "Not passed"
因此,对于您的情况,您将做一组差异,您将从 b 中减去 a 并获得一个数组,其中 b 中的元素不在 a 中。然后你可以检查它是否为空。如您所见,输出是,这是一个存在于但不312
存在于的条目;它的长度现在大于零,因此存在其中不存在的元素。a
b
b
a
你可以这样做:
a = an_array
b = another_array
for i in b:
if i not in a:
return False
return True