Как постепенно суммировать массив NumPy - PullRequest
1 голос
/ 22 февраля 2020

Простите, если об этом спрашивали раньше, я не смог его найти. Я пытаюсь постепенно суммировать массив numpy в новый массив numpy, используя векторные операции. Под этим я подразумеваю, что 2-й индекс нового массива равен 1-му + 2-му индексу старого массива. или A [n] = B [0] + B [1] ... + B [n]. Я знаю, как сделать это, используя для l oop, но я ищу векторизованное решение.

Вот мое не векторизованное решение:

import numpy as np  
A = np.arange(10)
B = np.empty(10)

for i in range(len(A)):
    B[i] = sum(A[0:i+1])

print(B)

Ответы [ 2 ]

4 голосов
/ 22 февраля 2020

Вы можете сделать это так:

import numpy as np  

A = np.arange(10)
B = np.cumsum(A)
# [ 0  1  3  6 10 15 21 28 36 45]

Спасибо

1 голос
/ 22 февраля 2020

«Прогрессивная» сумма называется совокупной суммой. Для этого используйте NumPy s cumsum.

Использование вашего примера и сравнение B с np.cumsum(A) дает равные массивы:

>>> import numpy as np
>>> A = np.arange(10)
>>> B = np.empty(10)
>>> for i in range(len(A)):
...     B[i] = sum(A[0:i+1])
... 
>>> np.array_equal(B, np.cumsum(A))
True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...