测试NumPy数组是否包含特定行

时间:2015-10-15 22:53:36

标签: python numpy

我想创建一个n-by-2 NumPy数组,然后测试它是否包含一个特定的1×2数组(即它是否包含特定的行)。

这是我的代码:

x = np.array([0, 1])
y = np.array([2, 3])
z = np.vstack((x, y))
if x in z:
    print "Yes"

但这给了我错误:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

请有人向我解释一下吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您可能正在使用较旧版本的numpy,因为1.10这确实有效;

>>> x = np.array([0, 1])
>>> y = np.array([2, 3])
>>> z = np.vstack((x, y))
>>> x in z
True
>>> np.__version__
'1.10.1'

那就是说,做你想做的事情:

>>> z
array([[0, 0],
       [0, 0]])
>>> x
array([0, 1])
>>> x in z
True

commented out herex in z相当于(x == z).any(),而不是您想要的行搜索。

要实现您的需求,您可以:

>>> (z == x).all(axis=1).any()
True
相关问题