我想创建一个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()
请有人向我解释一下吗?谢谢!
答案 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 here,x in z
相当于(x == z).any()
,而不是您想要的行搜索。
要实现您的需求,您可以:
>>> (z == x).all(axis=1).any()
True