一,ndarray 与条件运算符
# 导入 numpy 库
import numpy as np
# 创建一个 ndarray 类型数组
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# 获取 arr 与条件运算符的运算结果
out = arr < 5
# 打印运算结果 out
print(out)
运行结果:
[ True True True True False False False False False False]
可见,arr < 5 的返回值是一个与 arr 相同规模的布尔数组,当 arr 中的元素符合条件时,布尔数组的对应元素为 True,否则为False。这就是所谓的布尔索引。当然,布尔索引可以自行创建,只要规模和原数组相同即可,并非一定要借助条件运算符。
二,通过布尔索引访问 ndarray
# 导入 numpy 库
import numpy as np
# 创建一个 ndarray 类型数组
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# 创建布尔索引
idx_bool = np.array([True,True,True,True,False,False,False,False,False,False])
#通过布尔索引访问 arr
arr[idx_bool] = 99
# 打印 arr
print(arr)
运行结果:
[99 99 99 99 5 6 7 8 9 10]
可见,布尔索引的元素为 True 时,arr 的对应元素被访问。当布尔索引的元素为 False 时,arr 的对应元素未被访问。
而如果直接将数组的布尔索引访问结果返回,则会生成一个新的 ndarray。
# 导入 numpy 库
import numpy as np
# 创建一个 ndarray 类型数组
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# 创建布尔索引
idx_bool = np.arrat([True,True,True,True,False,False,False,False,False,False])
#通过布尔索引访问 arr
arr_2 = arr[idx_bool]
# 打印 arr_2
print(arr_2)
运行结果:
[1 2 3 4]