numpy支持一个数组与一个标量之间(或两个等长数组)之间的关系运算,得到一个新数组,新数组中每个元素为True或False,表示原数组中所有元素与该标量(或原来两个数组中对应元素)进行关系运算的结果。当使用仅含有True或False的numpy数组作为下标访问数组元素时,可以将False对应的元素过滤掉,只保留True对应的。
# 包含10个随机数的数组
>>> import numpy as np
>>> x = np.random.rand(10)
>>> x
array([ 0.56707504, 0.07527513, 0.0149213 , 0.49157657, 0.75404095,
0.40330683, 0.90158037, 0.36465894, 0.37620859, 0.62250594])
# 比较数组中每个元素值是否大于0.5
>>> x > 0.5
array([ True, False, False, False, True, False, True, False, False, True], dtype=bool)
# 获取数组中大于0.5的元素,可用于检测和过滤异常值
>>> x[x>0.5]
array([ 0.56707504, 0.75404095, 0.90158037, 0.62250594])
>>> x < 0.5
array([False, True, True, True, False, True, False, True, True, False], dtype=bool)
# 测试是否全部元素都小于1
>>> np.all(x<1)
True
# 是否存在等价于True的元素
>>> np.any([1,2,3,4])
True
>>> np.any([0])
False
>>> a = np.array([1, 2, 3])
>>> b = np.array([3, 2, 1])
# 两个数组中对应位置上的元素比较
>>> a > b
array([False, False, True], dtype=bool)
>>> a[a>b]
array([3])
>>> a == b
array([False, True, False], dtype=bool)
>>> a[a==b]
array([2])