【问题标题】:Indexing a multi-dimensional numpy array with an index array [duplicate]用索引数组索引多维numpy数组[重复]
【发布时间】:2017-07-24 14:57:45
【问题描述】:

在给定索引数组的情况下,我很难索引二维数组。

假设我有:

# Indexing array 
idx = np.array([0,2,1,2,1])

# Array to be indexed
my_array = np.array([[0,2,1], [0,5,1], [1,2,1], [5,1,3], [2,6,2]])

并且预期的输出应该是my_array的第一个条目的0索引,my_array的第二个条目的2索引等等,因此:

# Expected output
expected_array = np.array([0,1,2,3,6])

我实际上是使用 for 循环实现的:

# Using for-loop
expected_array = np.array([])
for i in range(len(my_array)):
    expected_array = np.append(idx, my_array[i][idx[i]])

但我想知道是否有一种方法可以在不使用 for 循环的情况下进行 数组索引?假设一直是len(idx)==len(my_array)

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    您可以使用numpy.arange 来创建一个数组来索引行,这一次只是每一行。然后使用您的 idx 数组索引每一行。

    >>> my_array[np.arange(my_array.shape[0]), idx]
    array([0, 1, 2, 3, 6])
    

    【讨论】: