# The cumulative sum and cumulative product of arrays

## Overview:

• numpy.ndarray supports cumulative sum and cumulative product of the n dimensional arrays.

• When cumulative sum or cumulative product is performed for a 1 dimensional array, the number of axes is 1. For a 2 dimensional array number of axis is 2 and for a 3 dimensional array number of axes is 3 and so on.

• When cumulative sum or cumulative product is performed for a one-dimensional array the axis parameter of cumsum() or cumprod() will take a value of 0. For a two dimensional array the axis parameter of cumsum() or cumprod() will take the values 0, 1 and for a three dimensional array the axis parameter of cumsum() or cumprod() will take the values 0, 1, 2 and so on.

• The diagram below illustrates how the cumsum() or cumprod() work in numpy on an ndarray object.

## Example - numpy.ndaray.csum:

 # Example Python program demonstrating cumulative sum of a numpy.ndarray   # Import numpy module import numpy as np   # Import standard library module random import random   # Create a 3 dimensional ndarray object array_3d = np.array([[[1,2,3,4],                     [1,2,3,4],                     [1,2,3,4]],                                         [[1,2,3,4],                     [1,2,3,4],                     [1,2,3,4]],                                         [[1,2,3,4],                     [1,2,3,4],                     [1,2,3,4]]]) print("Maximum value allowed for axis object for a 3 dimensional array:%d"%(array_3d.ndim-1)) print("Shape of the array: %d,%d,%d"%(array_3d.shape[0],array_3d.shape[1],array_3d.shape[2]))   print("Original Array:") print(array_3d)                      print("Cumulative Sum along Axis 0:") csum = array_3d.cumsum(axis=0) print(csum)   print("Cumulative Sum along Axis 1:") csum = array_3d.cumsum(axis=1) print(csum)   print("Cumulative Sum along Axis 2:") csum = array_3d.cumsum(axis=2) print(csum)

## Output:

 Maximum value allowed for axis object for a 3 dimensional array:2 Shape of the array: 3,3,4 Original Array: [[[1 2 3 4]   [1 2 3 4]   [1 2 3 4]]    [[1 2 3 4]   [1 2 3 4]   [1 2 3 4]]    [[1 2 3 4]   [1 2 3 4]   [1 2 3 4]]] Cumulative Sum along Axis 0: [[[ 1  2  3  4]   [ 1  2  3  4]   [ 1  2  3  4]]    [[ 2  4  6  8]   [ 2  4  6  8]   [ 2  4  6  8]]    [[ 3  6  9 12]   [ 3  6  9 12]   [ 3  6  9 12]]] Cumulative Sum along Axis 1: [[[ 1  2  3  4]   [ 2  4  6  8]   [ 3  6  9 12]]    [[ 1  2  3  4]   [ 2  4  6  8]   [ 3  6  9 12]]    [[ 1  2  3  4]   [ 2  4  6  8]   [ 3  6  9 12]]] Cumulative Sum along Axis 2: [[[ 1  3  6 10]   [ 1  3  6 10]   [ 1  3  6 10]]    [[ 1  3  6 10]   [ 1  3  6 10]   [ 1  3  6 10]]    [[ 1  3  6 10]   [ 1  3  6 10]   [ 1  3  6 10]]]

## Example - numpy.ndaray.cumprod:

 # Example Python program demonstrating cumulative product of a numpy.ndarray   # Import numpy module import numpy as np   # Import standard library module random import random   # Create a 2-dimensional ndarray object array_2d = np.array([[1,1,1,1],                     [2,2,2,2],                     [3,3,3,4]])                     print("Maximum value allowed for axis object for a 2 dimensional array:%d"%(array_2d.ndim-1)) print("Shape of the array: %d,%d"%(array_2d.shape[0], array_2d.shape[1]))   print("Original Array:") print(array_2d)                      print("Cumulative Product along Axis 0:") cproduct = array_2d.cumprod(axis=0) print(cproduct)   print("Cumulative Product along Axis 1:") cproduct = array_2d.cumprod(axis=1) print(cproduct)

## Output:

 Maximum value allowed for axis object for a 2 dimensional array:1 Shape of the array: 3,4 Original Array: [[1 1 1 1]  [2 2 2 2]  [3 3 3 4]] Cumulative Product along Axis 0: [[1 1 1 1]  [2 2 2 2]  [6 6 6 8]] Cumulative Product along Axis 1: [[  1   1   1   1]  [  2   4   8  16]  [  3   9  27 108]]