Учитывая numpy ndarray A
и целочисленный массив I
, той же формы, с наибольшим значением imax
и массивом B = np.zeros(imax)
, который мы можем сделать B[I] = A
. Однако, если I
имеет повторные записи, выполняется последнее назначение. Мне нужно сделать это при суммировании по повторяющимся записям, например,
For i in range(A.size):
B[I.ravel()[i]] += A.ravel()[i]
Есть ли хороший способ сделать это в numpy
?
Например, я хочу, чтобы это поведение (но ни =
, ни +=
не работало так)
A = np.array((1,2,5,9))
I = np.array((0,1,2,0),dtype=int)
B = np.zeros(3)
B[I] += A
print(B)
>>> array([10,2,5])
Здесь мы видим 1+9=10
в первой записи.