Я заметил тег numpy
, но в случае, если вы не возражаете против использования pandas
(или если вы читаете эти данные с помощью этого модуля), эта задача становится однострочной:
import pandas as pd
df = pd.DataFrame({'id': [1,1,1,2,2,2,3], 'score': [20,30,0,4,8,9,18]})
Итак, ваш фрейм данных будет выглядеть так:
id score
0 1 20
1 1 30
2 1 0
3 2 4
4 2 8
5 2 9
6 3 18
Теперь вы можете использовать функции groupby()
и sum()
:
df.groupby(['id'], sort=False).sum()
, который дает желаемый результат:
score
id
1 50
2 21
3 18
По умолчанию, фрейм данных будет отсортирован, поэтому я использую флаг sort=False
, который может улучшить скорость для больших фреймов данных.