我总结了一下Numpy中关于数组的几个常见索引情况:
-
a[ x ] [ y ] = a[x, y ]–选择位置是x行y列的单个元素。
arr = np.arange(25).reshape((5,5)) print(arr) print(arr[0][2]) print(arr[0,2]) [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14] [15 16 17 18 19] [20 21 22 23 24]] 2 2
-
a [ [x, y , z ] ]—选择行位置为x,y,z的数组。
arr = np.arange(25).reshape((5,5)) print(arr) print(arr[[0,2,4]]) [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14] [15 16 17 18 19] [20 21 22 23 24]] [[ 0 1 2 3 4] [10 11 12 13 14] [20 21 22 23 24]]
-
a[ x, [y1 , y2 , y3] ]–选择x行的y1,y2,y3列
arr = np.arange(25).reshape((5,5)) print(arr) print(arr[1,[0,2,4]]) [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14] [15 16 17 18 19] [20 21 22 23 24]] [5 7 9]
-
a[ [x1, x2, x3 ], [y1, y2, y3 ] ] = a[x1,y1] , a[x2, y2], a[x3, y3]
arr = np.arange(25).reshape((5,5)) print(arr) print(arr[[1,2,4],[0,2,4]]) [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14] [15 16 17 18 19] [20 21 22 23 24]] [ 5 12 24]
-
a[ [x1,x2,x3 ] [ y1,y2] ] – 选出[x1,x2,x3]中的第y1,y2行 (注意和情况4的区别!!!)
arr = np.arange(25).reshape((5,5)) print(arr) print(arr[[1,2,4][2]]) [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14] [15 16 17 18 19] [20 21 22 23 24]] [20 21 22 23 24]
-
a[ [x1,x2,x3 ] ] [ y ] – 选出[x1,x2,x3]中的第y行
arr = np.arange(25).reshape((5,5)) print(arr) print(arr[[1,2,4]][1]) [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14] [15 16 17 18 19] [20 21 22 23 24]] [10 11 12 13 14