Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Program to find running sum of 1d array in Python
A running sum array calculates the cumulative sum at each position. For a given array, the running sum at index i equals the sum of all elements from index 0 to i.
For example, if nums = [8, 3, 6, 2, 1, 4, 5], then the running sum will be [8, 11, 17, 19, 20, 24, 29] because:
rs[0] = nums[0] = 8 rs[1] = sum of nums[0..1] = 8 + 3 = 11 rs[2] = sum of nums[0..2] = 8 + 3 + 6 = 17 and so on
Method 1: Using In-Place Modification
We can modify the original array to build the running sum efficiently ?
def running_sum_inplace(nums):
n = len(nums)
result = [nums[0]]
for i in range(1, n):
nums[i] += nums[i-1]
result.append(nums[i])
return result
# Example
nums = [8, 3, 6, 2, 1, 4, 5]
print("Original array:", nums)
print("Running sum:", running_sum_inplace(nums.copy()))
Original array: [8, 3, 6, 2, 1, 4, 5] Running sum: [8, 11, 17, 19, 20, 24, 29]
Method 2: Using Separate Result Array
This approach preserves the original array by creating a new result array ?
def running_sum_separate(nums):
n = len(nums)
result = [0] * n
result[0] = nums[0]
for i in range(1, n):
result[i] = result[i-1] + nums[i]
return result
# Example
nums = [8, 3, 6, 2, 1, 4, 5]
print("Original array:", nums)
print("Running sum:", running_sum_separate(nums))
print("Original preserved:", nums)
Original array: [8, 3, 6, 2, 1, 4, 5] Running sum: [8, 11, 17, 19, 20, 24, 29] Original preserved: [8, 3, 6, 2, 1, 4, 5]
Method 3: Using NumPy cumsum()
NumPy provides a built-in function for cumulative sum calculations ?
import numpy as np
def running_sum_numpy(nums):
return np.cumsum(nums).tolist()
# Example
nums = [8, 3, 6, 2, 1, 4, 5]
print("Original array:", nums)
print("Running sum:", running_sum_numpy(nums))
Original array: [8, 3, 6, 2, 1, 4, 5] Running sum: [8, 11, 17, 19, 20, 24, 29]
Comparison
| Method | Space Complexity | Preserves Original | Best For |
|---|---|---|---|
| In-place | O(n) | No | Memory efficiency |
| Separate array | O(n) | Yes | Preserving input |
| NumPy cumsum() | O(n) | Yes | Performance with large arrays |
Conclusion
Use the in-place method for memory efficiency when you don't need the original array. Use NumPy's cumsum() for better performance with large datasets, or the separate array approach when preserving the input is important.
