神奇索引是 NumPy 中的术语,描述使用整数数组进行数据索引。
In [22]: arr = np.empty((8, 4))
In [23]:
In [23]: for i in range(8):
...: arr[i] = i
...:
In [24]: arr
Out[24]:
array([[0., 0., 0., 0.],
[1., 1., 1., 1.],
[2., 2., 2., 2.],
[3., 3., 3., 3.],
[4., 4., 4., 4.],
[5., 5., 5., 5.],
[6., 6., 6., 6.],
[7., 7., 7., 7.]])
In [25]: arr[[4, 3, 0, 6]]
Out[25]:
array([[4., 4., 4., 4.],
[3., 3., 3., 3.],
[0., 0., 0., 0.],
[6., 6., 6., 6.]])
In [26]:
In [26]: arr[[-3, -5, -7]]
Out[26]:
array([[5., 5., 5., 5.],
[3., 3., 3., 3.],
[1., 1., 1., 1.]])
In [27]: arr = np.arange(32).reshape((8, 4))
In [28]: arr
Out[28]:
array([[ 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]])
In [29]: arr[[1, 5, 7, 2], [0, 3, 1, 2]]
Out[29]: array([ 4, 23, 29, 10])
神奇索引与切片不同,它总是将数据复制到一个新的数组中。
网友评论