检查Python数组是否只包含一组数字列表

检查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

为了检查用户输入,我试图查看一个只包含数字列表的输入。输入是一个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:

但是没有任何效果…

也许您可以尝试将
数组
转换为
集合

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