У меня есть такой массив:
([(1, 1, 10),
(1, 1, 20),
(1, 2, 10),
(2, 1, 30),
(2, 1, 40),
(2, 2, 20)],
dtype=[('id', '<i8'), ('group', '<i8'), ('age', '<i8')])
И я хотел бы агрегировать этот массив, сгруппировав bu 'id' и 'age', получив среднее значение для возраста.
Я хотел бы получить такой результат:
([(1, 1, 15),
(1, 2, 10),
(2, 1, 35),
(2, 2, 20)],
dtype=[('id', '<i8'), ('group', '<i8'), ('age', '<i8')])
Я видел простые способы с pandas, но я действительно ищу способ сделать это с numpy. Я пробовал:
unique, uniqueInd, uniqueCount = np.unique(old_array['id'], return_inverse=True, return_counts=True)
means = np.bincount(uniqueInd, old_array['age'])/uniqueCount
new_array = np.dstack([unique, means])
, но не могу заставить его расширяться и группироваться по нескольким столбцам.
Большое спасибо :)!