Как суммировать элементы одного массива для одинаковых элементов другого массива без циклов?
Как просуммировать элементы одного массива [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}
Автор решения: 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.]