Как суммировать элементы одного массива для одинаковых элементов другого массива без циклов?

Как просуммировать элементы одного массива [0, 10, 20, 30, 40, 50] для одинаковых элементов в другогом массиве [0, 1, 2, 0, 1, 2]?

То есть, для "0" это "0+30", для "1" это "10+40", для "2" это "20+50", чтобы результатом стал массив: [30, 50, 70].

Но без циклов и двумерных массивов, т.к. долго.

import numpy as np
a = np.array([0,  1,  2,  0,  1,  2])
b = np.array([0, 10, 20, 30, 40, 50])
result = np.arange(3)
for n in range(3):
    ind = np.where(a == n)[0]
    result[n] = np.sum(b[ind])
result

Ответы (3 шт):

Автор решения: MaxU
import pandas as pd

df = pd.DataFrame({"a": a, "b": b})
res = df.groupby("a")["b"].sum()

результат:

In [177]: res
Out[177]:
a
0    30
1    50
2    70
Name: b, dtype: int32

In [178]: res.to_dict()
Out[178]: {0: 30, 1: 50, 2: 70}
→ Ссылка
Автор решения: Chorkov
result=[0]*3
for i,n in zip(a,b):
    result[i] += n
→ Ссылка
Автор решения: strawdog
import numpy as np
a = np.array([0,  1,  2,  0,  1,  2])
b = np.array([0, 10, 20, 30, 40, 50])
print(np.bincount(a,b))

[30. 50. 70.]

→ Ссылка