Каков наилучший способ векторизации следующего кода в numpy?
from numpy import *
A = zeros(5, dtype='int')
I = [1, 1, 1, 3]
J = [2, 1, 1, 1]
for i, j in zip(I, J):
A[i] += j
print A
Результат должен быть:
[0 4 0 1 0]
Здесь A
- исходный массив, I
хранит индекс, к которому мы хотим увеличить, на соответствующую запись J
.
Если вы просто векторизуете вышесказанное, выполнив:
A[I] += J
print A
получается неправильный ответ
[0 1 0 1 0]
, как, по-видимому, повторные индексы игнорируются. Существует ли операция, эквивалентная +=
, которая не игнорирует повторяющиеся индексы?