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

时间:2017-04-01 09:52:51

标签: 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 np.any(Array) == 0 and np.any(Array) == 1:

if np.all(Array) == -1 and 0 and 1:

但没有任何效果......

2 个答案:

答案 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个元素由等式比较返回的是