numpy 数组索引数组
在numpy中,数组除了可以被整数索引,还可以被数组索引.
a[b]就是已数组b的元素为索引,读取数组a的值.
当被索引数组a是一维数组,b是一维或则多维数组时,结果维度维度与索引数组b相同。
a = np.array([7,8,9,10]) b=np.array([[3,1],[1,2]]) print('a:',a) print('b:',b) print('result:',a[b]) print(a[b].shape)
a: [ 7 8 9 10] b: [[3 1] [1 2]] result: [[10 8] [ 8 9]] (2, 2)
当被索引数组a是多维数组,b是一维或则多维数组时,每一个唯一的索引数列指向a的第一维。
a = np.array([ [0, 0, 0], # 黑色 [255, 0, 0], # 红色 [0, 255, 0], # 绿色 [0, 0, 255], # 蓝色 [255, 255, 255] # 白色 ]) b= np.array([ [0, 1, 2, 0], [0, 3, 4, 0] ]) print(a.shape) print(b.shape) print('result:',a[b]) print(a[b].shape)
(5, 3) (2, 4) result: [[[ 0 0 0] [255 0 0] [ 0 255 0] [ 0 0 0]] [[ 0 0 0] [ 0 0 255] [255 255 255] [ 0 0 0]]] (2, 4, 3)