- 花式索引
花式索引
普通索引:
索引为具体的一个数值,或者切片访问
一般为连续分布或者通过设置步长有规律连续分布
花式索引:
一次性访问数组中的多个元素
可以没有规律
例子1
arr = np.array([15,36,78,20,100,66,30,20,33,40,18])
fancy_array = arr[[0,3,5,5,7]]
#或者可以这样
#改成列表保存索引
index =[0,3,5,5,7]
fancy_array = arr[index]
array([15, 20, 66, 66, 20])
例子2
二维数组
c = np.arange(0,12).reshape(3,4)
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
c[[0,1,2]]
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
c[[0,1,2],[1,2,3]]
array([ 1, 6, 11])
想要读取某一个元素,必须要指定行列两个参数
如果只给一维坐标,默认就是行索引
ndarray 的切片是共享原数据存储空间
对切片局部更改操作,会影响整体数据
花式索引
与切片不同,花式索引会将数据赋值到一个新的数组中
对另一个数组的改动,不会影响初始数据
arr = np.arange(0,20).reshape(4,5)
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])
row= np.array([0,3,1])
#对应的是具体行号索引
col = np.array([1,0,1,0,1],dtype=bool)
#对应的是需要哪个位置的值,哪个就是1
arr[row,col]
array([ 0, 17, 9])