总结一个数组的特定索引以获得另一个数组

问题描述

我有一个长度为N的一维数组,例如:

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]