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.

Updated on: 2026-03-26T19:19:51+05:30

207 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements