首先创建一个ndarray
import numpy as np
array = np.arange(1, 9)
array = array[array % 2==0]
print(array) # [2 4 6 8]
上面的代码从array中过滤偶数组成新的ndarray,我们该如何理解这段代码呢?首先,我们先要弄清楚中括号里的操作
import numpy as np
array = np.arange(1, 9)
print(array % 2==0) # [False True False True False True False True]
有了ndarray广播功能的基础,这段代码不是特别难理解,数组里的每个元素都对2取模然后和0比较是否相等,计算结果是bool类型,于是得到了一个新的数组,且这个数组的维度与array是相同的。
array = array[array % 2==0]
这段代码等价于
array = np.arange(1, 9)
filter = np.array([False, True, False, True, False, True, False, True])
array = array[filter]
print(array) # [2 4 6 8]
filter数组的元素如果为True,则array对应索引位置的元素被保留下来,否则被剔除,这样就得到了过滤后的新数组。
我们还可以使用&and| 运算符进行更加复杂的计算
import numpy as np
array = np.arange(1, 9)
array_1 = array[(array > 3) & (array % 2 == 0)]
print(array_1) # [4 6 8]
array_2 = array[(array > 6) | (array % 2 == 0)]
print(array_2) # [2 4 6 7 8]
QQ交流群: 211426309