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
Return the cumulative sum of array elements over given axis treating NaNs as zero in Python
To return the cumulative sum of array elements over a given axis treating NaNs as zero, use the nancumsum() method. The cumulative sum does not change when NaNs are encountered and leading NaNs are replaced by zeros.
The method returns a new array with cumulative sums computed along the specified axis. Zeros are returned for slices that are all-NaN or empty. Cumulative sum works progressively: 5, 5+10, 5+10+15, 5+10+15+20.
Syntax
numpy.nancumsum(a, axis=None, dtype=None, out=None)
Parameters
- a − Input array
- axis − Axis along which the cumulative sum is computed. Default (None) computes over flattened array
- dtype − Type of returned array and accumulator. Defaults to input array's dtype
- out − Alternative output array to place the result
Example
Let's create a 2D array with NaN values and compute cumulative sum along different axes ?
import numpy as np
# Creating a numpy array with NaN values
arr = np.array([[10, 20, 30], [40, np.nan, 60]])
print("Our Array...")
print(arr)
print("\nDimensions:", arr.ndim)
print("Datatype:", arr.dtype)
# Cumulative sum along axis=1 (rows)
print("\nCumulative Sum along axis=1:")
print(np.nancumsum(arr, axis=1))
Our Array... [[10. 20. 30.] [40. nan 60.]] Dimensions: 2 Datatype: float64 Cumulative Sum along axis=1: [[ 10. 30. 60.] [ 40. 40. 100.]]
Different Axis Examples
Let's see cumulative sum along different axes and with flattened array ?
import numpy as np
arr = np.array([[5, np.nan, 15], [20, 25, np.nan]])
print("Array:")
print(arr)
# Along axis=0 (columns)
print("\nCumulative sum along axis=0:")
print(np.nancumsum(arr, axis=0))
# Along axis=1 (rows)
print("\nCumulative sum along axis=1:")
print(np.nancumsum(arr, axis=1))
# Flattened array (axis=None)
print("\nCumulative sum of flattened array:")
print(np.nancumsum(arr))
Array: [[ 5. nan 15.] [20. 25. nan]] Cumulative sum along axis=0: [[ 5. nan 15.] [25. 25. 15.]] Cumulative sum along axis=1: [[ 5. 5. 20.] [20. 45. 45.]] Cumulative sum of flattened array: [ 5. 5. 20. 40. 65. 65.]
Comparison with Regular cumsum()
| Method | NaN Handling | Use Case |
|---|---|---|
cumsum() |
Propagates NaN | When NaN should invalidate results |
nancumsum() |
Treats NaN as zero | When NaN should be ignored |
import numpy as np
arr = np.array([1, 2, np.nan, 4])
print("Regular cumsum():")
print(np.cumsum(arr))
print("\nnancumsum():")
print(np.nancumsum(arr))
Regular cumsum(): [ 1. 3. nan nan] nancumsum(): [1. 3. 3. 7.]
Conclusion
Use np.nancumsum() to compute cumulative sums while treating NaN values as zero. This is especially useful in data analysis where missing values should not break the cumulative calculation.
