Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Elegant pythonic cumsum

Tags:

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...

like image 631
Jonathan Livni Avatar asked Feb 13 '12 10:02

Jonathan Livni


People also ask

What does Cumsum mean in Python?

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.

What does Numpy Cumsum return?

cumsum. Return the cumulative sum of the elements along a given axis.


1 Answers

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]
like image 126
Fred Foo Avatar answered Nov 09 '22 02:11

Fred Foo