Numpy中的高级索引

时间:2018-04-05 09:07:54

标签: python numpy

我有两个数组:AA.shape = (N, M, K)indexindex.shape = (N, M)。因此,我希望得到B这样的数组B[i, j] = A[i, j, index[i, j]]。如何以最简单的方式实现这一目标?

我想到的一个解决方案就是我们可以这样做: B = A.reshape(-1, K)[np.arange(N * M), index.reshape(-1)].reshape(N, M)。我想知道是否有其他解决方案?

1 个答案:

答案 0 :(得分:3)

您可以将2D扩展范围数组用于与索引数组index的形状对齐的第一个轴,因此使用advanced-indexing,就像这样 -

B = A[np.arange(N)[:,None], np.arange(M), index]