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,是正确的