《深度学习与图像识别:原理与实践》—2.3.11 Numpy数组比较
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里的数据是否满足一定的条件。
- 点赞
- 收藏
- 关注作者
评论(0)