问题描述
A = numpy.array([2.1,4.5,1.0,6.5,3.3,1.9,4.0])
我想对A的一些特定索引求和,以获得长度为M的新数组“ B”。我要求和的A的确切索引存储在这样的列表中:
idx = [[1,2],[4,5,6],[1],[5,3],[2,2,1,4]]
所以本质上,我希望B看起来像这样:
B = [A[1] + A[2],A[4] + A[5] + A[6],A[1],A[5] + A[3],A[2] + A[2] + A[1] + A[4]]
如何有效地实现这一目标?我选择不使用循环,因为数组的实际大小比本示例大得多,并且此操作在我的代码中执行了多次。
解决方法
B = [sum(A[i] for i in indices) for indices in idx]