抱歉,如果没有得到答案,我不知道重新提出问题的协议。几个月前在这里问过这个问题:Numpy sum between pairs of indices in 2d array
我有一个 2-d numpy 数组 (MxN) 和另外两个 1-d 数组 (Mx1),它们代表我想要总结的 2-d 数组的每一行的开始和结束索引。我正在寻找在大型数组中执行此操作的最有效方法(最好不必使用循环,这是我目前正在做的)。我想做的一个例子如下。
>>> random.seed(1234)
>>> a = random.rand(4,4)
>>> print a
[[ 0.19151945 0.62210877 0.43772774 0.78535858]
[ 0.77997581 0.27259261 0.27646426 0.80187218]
[ 0.95813935 0.87593263 0.35781727 0.50099513]
[ 0.68346294 0.71270203 0.37025075 0.56119619]]
>>> b = array([1,0,2,1])
>>> c = array([3,2,4,4])
>>> d = empty(4)
>>> for i in xrange(4):
d[i] = sum(a[i, b[i]:c[i]])
>>> print d
[ 1.05983651 1.05256841 0.8588124 1.64414897]
我的问题类似于以下问题,但是,我认为那里提出的解决方案不会非常有效。Numpy sum of values in subarrays between the pairs of indices在那个问题中,他们想要找到同一行的多个子集的总和,所以cumsum()
可以使用。但是,我每行只会找到一个总和,所以我认为这不是计算总和的最有效方法。