深度学习与目标检测:工具、原理与算法
上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里的数据是否满足一定的条件。