使用 numpy 对基于另一个 numpy 向量的索引求和

Use numpy to sum indices based on another numpy vector

我正在尝试根据第二个 numpy 向量中的值对 numpy 矩阵中每行的特定索引求和。例如,在图像中,有矩阵 A 和索引向量 inds。这里我想总结一下:

A[0, inds[0]] + A[1, inds[1]] + A[2, inds[2]] + A[3, inds[3]]

我目前正在使用 python for 循环,这使得代码非常慢。有没有办法使用矢量化来做到这一点?谢谢!

是的,numpy 的神奇索引可以做到这一点。只需为第一个维度生成一个 range 并为第二个维度使用您的坐标:

import numpy as np

x1 = np.array( [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]] )
print(x1[ [0,1,2,3],[2,0,3,1] ].sum())