三、布尔索引
注:布尔索引必须与要索引的数组形状相同,否则会引发IndexError错误。
注:布尔索引返回的新数组是原数组的副本,与原数组不共享相同的数据空间,即新数组的修改不会影响原数组,这是所谓的深层复制。
注:布尔索引返回的一定是一维数组
代码练习:
import numpy as np
# %% 一维数组的布尔索引
a1 = np.array([1,2,3,4])
b1 = np.array([True,False,True,False])
print(a1[b1])
# %% 二维数组的布尔索引
a2 = np.array([[1,2,3],
[4,5,6],
[7,8,9]])
b2 = np.array([[True,False,True],
[True,False,True],
[True,False,True],])
print(a2[b2])
print(a2[b2].shape)
# %% 深层复制和浅层复制
# %% 布尔索引
a3 = np.array([1,2,3])
b3 = np.array([True,False,True])
c3 = a3[b3]
print(c3)
c3[1] = 100
print(a3)
print(c3)
## %% 切片访问
a4 = np.array([7,8,9])
b4 = np.array([False,True,True])
c4 = a4[1:]
print(c4)
c4[1] = 100
print(c4)
print(a4)
布尔索引深层复制,不影响原数组;切片索引浅层复制,影响原数组;
布尔索引输出一定是一维数组
布尔索引.