On 07/19/2010 01:18 PM, dhruvbird wrote: > Hello, > I have a list of integers: x = [ 0, 1, 2, 1, 1, 0, 0, 2, 3 ] > And would like to compute the cumulative sum of all the integers > from index zero into another array. So for the array above, I should > get: [ 0, 1, 3, 4, 5, 5, 5, 7, 10 ] > What is the best way (or pythonic way) to get this. > > Regards, > -Dhruv.
Maybe not pythonic, but straight-forward: >>> import numpy >>> numpy.cumsum(x) array([ 0, 1, 3, 4, 5, 5, 5, 7, 10]) An example with a class class CumulativeSum(object): def __init__(self, start=0): self._current = start def __call__(self, value): self._current += value return self._current >>> cummulative_sum = CumulativeSum(0) >>> map(cummulative_sum, x) [0, 1, 3, 4, 5, 5, 5, 7, 10] Dirty: current = 0 def cummulative_sum(value): global current current += value return current >>> map(cummulative_sum, x) [0, 1, 3, 4, 5, 5, 5, 7, 10] Weird: def cummulative_sum_reducer(x, y): x.append(x[-1] + y) return x >>> reduce(cummulative_sum_reducer, x, [0]) [0, 0, 1, 3, 4, 5, 5, 5, 7, 10] Cheers Andre -- http://mail.python.org/mailman/listinfo/python-list