在索引对之间的子阵列中的Numpy值

Ven*_*tta 3 python numpy sum

假设我有一个数组A.我有一系列索引对(a1,b1),(a2,b2)......(an,bn)

我想获得这些对之间所有元素的总和.即

sum(A[a1:b1]), sum(A[a2:b2]), sum(A[a3:b3]) ...
Run Code Online (Sandbox Code Playgroud)

就运行时而言,最有效的方法是什么?

谢谢!

Sve*_*ach 8

假设您的索引对存储在NumPy indices形状的数组中(n, 2)并且n相当大,那么最好避免使用任何Python循环:

c = numpy.r_[0, A.cumsum()][indices]
sums = c[:,1] - c[:,0]
Run Code Online (Sandbox Code Playgroud)