Как суммировать конкретные элементы в массиве - PullRequest
0 голосов
/ 22 июня 2019

Я хочу суммировать элементы в массиве.Например, у меня есть массив

[183948, 218520, 243141, 224539, 205322, 203855, 233281, 244830, 281245,
 280579, 235384, 183596, 106072,  88773,  63297,  38769,  28343]

Я хочу суммировать его в трех разных частях, которые являются первые три элемента, следующие 10 элементов и остальные.Моя единственная идея - разделить массив и использовать метод sum.Есть ли лучший способ сделать это?Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 22 июня 2019

Вы можете использовать reduceat метод np.add:

data = [183948, 218520, 243141, 224539, 205322, 203855, 233281, 244830, 281245,
 280579, 235384, 183596, 106072,  88773,  63297,  38769,  28343]

sizes = 3, 10

np.add.reduceat(data, np.cumsum([0, *sizes]))
# array([ 645609, 2198703,  219182])
0 голосов
/ 22 июня 2019

попробуйте это:

arr=[183948, 218520, 243141, 224539, 205322, 203855, 233281, 244830, 281245,
 280579, 235384, 183596, 106072,  88773,  63297,  38769,  28343]

first=arr[0:3]
second=arr[3:13]
last=arr[13:]

print(sum(first))
print(sum(second))
print(sum(last))

альтернативная более расширяемая версия выглядит следующим образом

arr=[183948, 218520, 243141, 224539, 205322, 203855, 233281, 244830, 281245,
 280579, 235384, 183596, 106072,  88773,  63297,  38769,  28343]

indices=[3,13]
results=[]
prev=0
for i in indices:
    results.append(sum(arr[prev:i]))
    prev=i
results.append(sum(arr[prev:]))

for res in results:
    print(res)

примечание: установите prev = индекс, с которого вы хотите начать, в данном случае 0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...