上QQ阅读APP看书,第一时间看更新
2.3.11 NumPy数组比较
NumPy强大的地方是可以进行数组或矩阵的比较,数据比较之后会产生Boolean值。
import numpy as np matrix = np.array([ [5, 10, 15], [20, 25, 30], [35, 40, 45] ]) m = (matrix == 25) print(m)
返回结果如下。
[[False False False] [False True False] [False False False]]
我们再来看一个比较复杂的例子。
import numpy as np matrix = np.array([ [5, 10, 15], [20, 25, 30], [35, 40, 45] ]) second_column_25 = (matrix[:,1] == 25) print(second_column_25) print(matrix[second_column_25, :])
上述代码中,print(second_column_25)输出的是[False True False]。matrix[:,1]代表的是所有的行以及索引为1的列[10,25,40],然后和25进行比较,得到的就是false,true,false。print(matrix[second_column_25,:])代表返回true值的那一行数据[20,25,30]。
上述例子是单个条件,NumPy也允许我们使用条件符拼接多个条件,其中&代表且,|代表或。比如vector=np.array([5,10,11,12]),equal_to_five_and_ten=(vector==5) & (vector==10)返回的都是false;如果是equal_to_five_or_ten=(vector==5)|(vector==10),则返回[True,True,False,False]。
我们可以通过np.count_nonzero(x<=3)计算小于、等于3的元素个数,1代表True,0代表False;也可以通过np.any(x==0)计算,只要x中有一个元素等于0,就返回True。np.all(x>0)需要所有的元素都大于0才能返回True,以此帮助我们判断x里的数据是否满足一定的条件。