How to Efficiently Compute the Cumulative Sum of Numbers in a List
When processing numerical data, it's often necessary to calculate the cumulative sum of numbers in a list. Here, we provide a comprehensive solution and address an issue raised by a user who attempted to manually sum the elements of a list.
For example, given time_interval = [4, 6, 12], the user aims to compute [4, 4 6, 4 6 12] to obtain the cumulative sum t = [4, 10, 22].
Manual Approach:
The user initially tried a manual approach by iterating over the list and accumulating the sums:
t1 = time_interval[0] t2 = time_interval[1] + t1 t3 = time_interval[2] + t2 print(t1, t2, t3) # -> 4 10 22
This approach, however, requires explicit iteration and may become tedious for larger lists.
Numpy Implementation:
If you frequently perform numerical operations on arrays, numpy is a highly recommended library that provides a built-in function for cumulative summation: cumsum. Using numpy, the cumulative sum can be computed efficiently:
import numpy as np a = [4, 6, 12] np.cumsum(a) #array([4, 10, 22])
Performance Comparison:
Numpy often outperforms pure python implementations for such numerical operations. A comparison between numpy's cumsum and the user's manual accumulation function (accumu) demonstrates the difference:
In [136]: timeit list(accumu(range(1000))) 10000 loops, best of 3: 161 us per loop In [137]: timeit list(accumu(xrange(1000))) 10000 loops, best of 3: 147 us per loop In [138]: timeit np.cumsum(np.arange(1000)) 100000 loops, best of 3: 10.1 us per loop
While numpy may introduce a dependency, its efficiency may justify its use if you frequently perform similar numerical operations.
The above is the detailed content of How Can I Efficiently Calculate the Cumulative Sum of a Numerical List?. For more information, please follow other related articles on the PHP Chinese website!