检查Python数组是否只包含一组数字列表
为了检查用户输入,我试图查看一个只包含数字列表的输入。输入是一个100x100阵列,数字为-1,0和1。现在我尝试使用if语句来检查这个数组是否只包含上面的数字检查Python数组是否只包含一组数字列表,python,arrays,Python,Arrays,为了检查用户输入,我试图查看一个只包含数字列表的输入。输入是一个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 n
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:
但是没有任何效果…也许您可以尝试将
数组
转换为集合
:
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"
也许您可以尝试将
数组
转换为集合
:
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"
可以使用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
注意:如果所有元素都不相等,比较两个数组将返回False;如果所有元素都为True,则返回一个包含3个“True”元素的数组,因此,我们需要使用np.all来确保相等比较返回的所有3个元素都是真的您可以使用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
注意:如果所有元素都不相等,比较两个数组将返回False;如果所有元素都为True,则返回一个包含3个“True”元素的数组,因此我们需要使用np.all来确保相等比较返回的所有3个元素都为True