What would be an elegant and pythonic way to implement cumsum?
Alternatively - if there'a already a built-in way to do it, that would be even better of course...
cumsum() function is used when we want to compute the cumulative sum of array elements over a given axis. Syntax : numpy.cumsum(arr, axis=None, dtype=None, out=None) Parameters : arr : [array_like] Array containing numbers whose cumulative sum is desired.
cumsum. Return the cumulative sum of the elements along a given axis.
It's available in Numpy:
>>> import numpy as np
>>> np.cumsum([1,2,3,4,5])
array([ 1, 3, 6, 10, 15])
Or use itertools.accumulate
since Python 3.2:
>>> from itertools import accumulate
>>> list(accumulate([1,2,3,4,5]))
[ 1, 3, 6, 10, 15]
If Numpy is not an option, a generator loop would be the most elegant solution I can think of:
def cumsum(it):
total = 0
for x in it:
total += x
yield total
Ex.
>>> list(cumsum([1,2,3,4,5]))
>>> [1, 3, 6, 10, 15]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With