首页 > 解决方案 > 如何使用两个索引数组扩展 numpy 数组

问题描述

我有一个 numpy 矩阵,例如:

a = np.array([[1, 2], [3, 4]])

然后,我想使用另一个带有索引的 numpy 矩阵来扩展矩阵,例如:

idxes = np.array(([0, 1, 0], [1, 0, 1]]) # the indexes matrix

操作是这样的:

result = a[:, idxes] # this is an wrong expression

我预期的结果是:

>>result
array([[1, 2, 1],
       [4, 3, 4]])

我想知道该怎么做。

标签: pythonarraysnumpy

解决方案


您需要为第一个 (0 th ) 轴指定 a 范围。

a[np.arange(len(a))[:,None], idxes]

这直观地遵循了索引操作,第一行将idxes索引到 的第一行a,第二行将idxes索引到 的第二行a,以此类推。

此外,arange数组的维度需要从一维扩展到二维,因为idxes它也是一个二维数组。


推荐阅读