切片索引、布尔索引、花式索引是数组的三种索引方式,但三者对于原数据的影响是不同的:
1)切片索引
#切片索引 切片是原结构的照片 改变切片中的元素 原结构跟着改变
a = np.arange(15).reshape(5,3)
print(a)
b1 = a[:2,2]
print()
print(b1)
b1[0] = 16
print(a)
结果为:
可见修改b1中的数据,会发现原数据a中的值发生改变。
2)布尔索引
#布尔索引 用布尔索引总是会返回一份新创建的数据,原本的数据不会被改变。
a2 = np.arange(15).reshape(3,5)
print(a2)
mask = a2<5
b2 = a2[mask]
print()
print(b2)
b2[0] = 17
print(a2)
结果为:
修改b2中的数据,会发现原数据a2中的值没有发生改变。
3)花式索引
#花式索引 得到的是一个新的array,不会改动原数据
a3 = np.arange(15).reshape(3,5)
print(a3)
b3 = a3[[0,1],[1,3]]
print()
print(b3)
b3[0] = 16
print(a3)
结果为:
修改b3中的数据,会发现原数据a3中的值没有发生改变。