有没有办法检查两个条件?例如,
a=np.array([1,2,3,4,5,6,7,8])
if any(a != 0 and a!=1)==True:
do something
编辑:提供答案。无需任何更多输入。干杯
答案 0 :(得分:2)
您需要使用包含布尔值的生成器对象或iterable。下面的生成器表达式仅包含true和false,具体取决于项目是否为1以外的数字和零。
if any(i != 0 and i != 1 for i in a):
print "I'll do something here"
问题是,你试图测试数组是否不等于零和一,因此传递一个布尔而不是一个可迭代或生成器。您想测试单个值而不是数组本身。
答案 1 :(得分:0)
Numpy
是一种矫枉过正的行为,而any()
是无用的。请改用Set
if set(arr) - set([1,2]):
do something
答案 2 :(得分:0)
如果您只想对a
的所有不是(例如)0或1的元素执行某些操作,您可以先过滤数组:
for element in filter(lambda x: x != 0 and x != 1, array):
#dosomething with element
或者,如果您不习惯使用匿名函数,那么对于更易读的版本:
def func(a):
return a != 0 and a != 1
for element in filter(func, array):
#dosomething with element