神奇索引是numpy中的术语,可以用来使用整数数组进行数据索引
它可以让你找到数组中任意位置的元素,并把它们按一定顺序输出
比如说,输出一个二维数组的第4,3,0,6行,并依次排列:
import numpy as np
x = np.arange(36).reshape(9, 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 25 26 27]
# [28 29 30 31]
# [32 33 34 35]]
print(x)
print(x[[4, 3, 0, 6]])
# [[16 17 18 19]
# [12 13 14 15]
# [ 0 1 2 3]
# [24 25 26 27]]
又比如输出一个二维数组的第1, 2列,并依次排列:
import numpy as np
x = np.arange(36).reshape(9, 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 25 26 27]
# [28 29 30 31]
# [32 33 34 35]]
print(x[:, [1, 2]])
# [[ 1 2]
# [ 5 6]
# [ 9 10]
# [13 14]
# [17 18]
# [21 22]
# [25 26]
# [29 30]
# [33 34]]
接下来我们来点刺激的
输出第1行的第0列,第5行的第3列,第7行的第1列,第2行的第2列。
import numpy as np
x = np.arange(36).reshape(9, 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 25 26 27]
# [28 29 30 31]
# [32 33 34 35]]
print(x[[1, 5, 7, 2], [0, 3, 1, 2]])
# [ 4 23 29 10]
.
参考资料
《利用python进行数据分析》