Python 判断数组中元素是否都满足某条件(比如是否都大于0)

这里记录下一个在代码中和经验贴中都常见的错误,即np.array.any()和(np.array+判断条件).any()的区别。

首先,np.array.any()“或”操作,任意一个元素为True(或非0),则结果为True;而(np.array+判断条件).any(),举个例子为(np.array>0).any()表示判断该数组中是否存在元素>0

与之同理,np.array.all()“与”操作,所有元素为True(或非0),则结果为True;而(np.array+判断条件).all(),举个例子为(np.array>0).all()表示判断该数组中所有元素是否都>0

具体可以看以下代码展示:

import numpy as np
##定义一个列表
x=[0,2,4,6]
print(np.array(x).any())
###  输出结果为:True
print(np.array(x).all())
###  输出结果为:False
##若使用该方法判断数组是否有元素或所有元素满足某条件,不会报错,但是结果可能是错的
print(np.array(x).any()>0)
###  输出结果为:True,因为True默认为1,是>0的,此时结果是对的,但如果设置y=[-1,-2,-3],结果就错了
y=[-1,-2,-3]
print(np.array(y).any()>0)
###  输出结果为True,显然不对

##再看正确的判断方式
x=[0,2,4,6]
print((np.array(x)>0).any())
###  输出结果为True
y=[-1,-2,-3]
print((np.array(y)>0).any())
###  输出结果为False,是正确的

你可能感兴趣的:(python,numpy)