У меня есть (большой) массив данных и (большой) список списков (несколько) индексов, например,NumPy: Выбрать и суммировать данные в массив
data = [1.0, 10.0, 100.0]
contribs = [[1, 2], [0], [0, 1]]
Для каждой записи в contribs
, Я хотел бы подытожить соответствующие значения data
и поместить их в массив. Для приведенного выше примера, ожидаемый результат будет
out = [110.0, 1.0, 11.0]
Делая это в цикле работ,
c = numpy.zeros(len(contribs))
for k, indices in enumerate(contribs):
for idx in indices:
c[k] += data[idx]
, но так как data
и contribs
большие, это занимает слишком много времени.
У меня такое ощущение, что это можно улучшить, используя причудливую индексацию numpy.
Любые подсказки?
Пробовали ли вы какие-либо фантазии индексации? – wwii
Уверен, но тот факт, что записи 'contribs' имеют разную длину, затрудняет. Я никуда не денусь. –