要检查用户输入,我试图查看输入只包含一个数字列表。输入是一个100x100数组,数字为-1,0和1.现在我尝试使用if语句检查此数组是否只包含上述数字。
if np.all(Array) == (-1,0,1):
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我也尝试过:
if np.any(Array) == -1 and np.any(Array) == 0 and np.any(Array) == 1:
if np.all(Array) == -1 and 0 and 1:
但没有任何效果......
答案 0 :(得分:0)
也许您可以尝试将array
转为set
:
import numpy as np
x=np.array([[-1,0,-1],[1,1,1]])
if set(x.flatten())=={1,0,-1}:
print "yes"
或使用unique()
方法查找数组的唯一元素。:
if set(np.unique(x))=={1,0,-1}:
print "yes"
答案 1 :(得分:0)
您可以使用numpy.unique来获取数组中唯一元素的排序数组。
尝试以下方法:
import numpy as np
a = np.array([[1,1],[0,1],[1,-1]]
def foo(a):
lst = [-1,0,1]
if isinstance(np.unique(a) == lst, bool) and not(np.unique(a) == lst):
return False
elif np.all(np.unique(a) == lst) == True:
return True
print foo(a) ##prints True because the array 3x3 array 'a' only contains the elements -1,0,1
注意:如果所有元素不相等,则比较2个数组返回False,如果所有元素都为真,则返回3个'True'元素的数组,因此我们需要使用np.all来确保所有3个元素由等式比较返回的是