数组的神奇索引
神奇索引是 Numpy 中的术语,用于描述使用整数数组进行数据索引。
与切片不同,神奇索引是将数据复制到一个新的数组中。
假设我们有一个 8 x 4 的数组:
为了选出一个符合特定顺序的子集,我们可以简单的通过传递一个包含指明所需顺序的列表或数组来完成:
如果使用负的索引,将从尾部进行选择:
传递多个索引数组时情况有些许不同,这样会根据每个索引元组对应的元素选出一个一维数组:
在上述例子中,元素(1, 0)、(5, 3)、(7, 1)、(2, 2) 被选中。如果不考虑数组的维数(本例中是二维),神奇索引的结果总是唯一的。
在本例中,神奇索引的行为和一些用户所设想的并不相同(包括我自己)。通常情况下,我们所设想的结果是通过选择矩阵中行列的子集所形成的矩形区域。下面是实现我们想法的一种方式: