我有两个数组:A
,A.shape = (N, M, K)
和index
,index.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)
。我想知道是否有其他解决方案?
答案 0 :(得分:3)
您可以将2D
扩展范围数组用于与索引数组index
的形状对齐的第一个轴,因此使用advanced-indexing
,就像这样 -
B = A[np.arange(N)[:,None], np.arange(M), index]