Извините, я не знаю протокол для повторного запроса вопроса, если он не получит ответа. Этот вопрос был задан несколько месяцев назад здесь: Суммарная сумма между парами индексов в массиве 2d
У меня есть массив 2-d numpy (MxN) и еще два массива 1-d (Mx1), которые представляют начальные и конечные индексы для каждой строки 2-мерного массива, который я хотел бы суммировать. Я ищу наиболее эффективный способ сделать это в большом массиве (желательно без использования цикла, который я сейчас делаю). Примером того, что я хотел бы сделать, является следующее.
>>> 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]
Моя проблема аналогична следующему вопросу, однако я не думаю, что представленное там решение было бы очень эффективным. Количество сумм значений в подмассивах между парами индексов В этом вопросе они хотят найти сумму нескольких подмножеств для одной и той же строки, поэтому cumsum()
можно использовать. Тем не менее, я нахожу только одну сумму за строку, поэтому я не думаю, что это было бы самым эффективным средством вычисления суммы.