numpy.nancumsum

numpy.nancumsum(a, axis=None, dtype=None, out=None)

Функция nancumsum() возвращает кумулятивную (накапливаемую) сумму элементов массива, в том числе и по заданной оси (осям), в которой элементы nan учитываются как 0.

Для пустых массивов или массивов состоящих только из nan возвращается 0.

Параметры:
a - подобный массиву объект или массив NumPy
Указанный объект или массив может состоять из любого доступного в NumPy числового типа.
axis - None, целое число или кортеж целых чисел (необязательный аргумент)
Данный параметр указывает номер оси или номера осей массива по которым выполняется суммирование его элементов. По умолчанию axis = None, что соответствует кумулятивному суммированию всех элементов массива. Если указано отрицательное число, то номер оси отсчитывается от последней оси по направлению к первой. Если указан кортеж целых чисел, то кумулятивное суммирование выполняется по всем указанным осям.
dtype - тип данных NumPy (необязательный аргумент)
Данный параметр указывает тип данных возвращаемого массива а так же тип накапливающего сумматора, в котором происходит сложение элементов. По умолчанию dtype = None, что соответствует типу данных входного массива.
out - массив Numpy (необязательный аргумент)
Указывает массив в который будет помещен результат работы функции. Данный массив должен иметь форму идентичную массиву с результатом работы функции. Подробнее о данном параметре смотрите на странице универсальные функции в разделе out.
Возвращает:
результат - число или массив NumPy
Массив в котором каждый элемент является суммой предшествующих ему элементов в исходном массиве или элементов вдоль указанной оси исходного массива.
Смотрите так же: cumsum, nansum, sum, prod

Примеры

>>> import numpy as np
>>> 
>>> np.nancumsum([])
array([], dtype=float64)
>>> np.nancumsum(1)
array([1], dtype=int32)
>>> np.nancumsum([1])
array([1], dtype=int32)
>>> np.nancumsum(np.nan)
array([0.])
>>> np.nancumsum([np.nan])
array([0.])
>>> 
>>> x = np.full(5, np.nan)
>>> x
array([nan, nan, nan, nan, nan])
>>> 
>>> np.nancumsum(x)
array([0., 0., 0., 0., 0.])
>>> 
>>> 
>>> x = np.arange(1, 10, dtype = np.float64).reshape(3, 3)
>>> x
array([[1., 2., 3.],
       [4., 5., 6.],
       [7., 8., 9.]])
>>> i, j = [0, 1, 2], [0, 1, 2]
>>> x[i, j] = np.nan
>>> x
array([[nan,  2.,  3.],
       [ 4., nan,  6.],
       [ 7.,  8., nan]])
>>> 
>>> 
>>> np.nancumsum(x)
array([ 0.,  2.,  5.,  9.,  9., 15., 22., 30., 30.])
>>> 
>>> #  кумулятивная сумма по столбцам:
... np.nancumsum(x, axis = 0)
array([[ 0.,  2.,  3.],
       [ 4.,  2.,  9.],
       [11., 10.,  9.]])
>>> 
>>> #  кумулятивная сумма по строкам:
... np.nancumsum(x, axis = 1)
array([[ 0.,  2.,  5.],
       [ 4.,  4., 10.],
       [ 7., 15., 15.]])
>>>
>>>
>>> #  Наличие значений inf и -inf:
... x = np.arange(1, 10, dtype = np.float64).reshape(3, 3)
>>> x
array([[1., 2., 3.],
       [4., 5., 6.],
       [7., 8., 9.]])
>>> x[1][1] = np.inf
>>> x
array([[ 1.,  2.,  3.],
       [ 4., inf,  6.],
       [ 7.,  8.,  9.]])
>>> np.nancumsum(x)
array([ 1.,  3.,  6., 10., inf, inf, inf, inf, inf])
>>> 
>>> x[1][1] = -np.inf
>>> x
array([[  1.,   2.,   3.],
       [  4., -inf,   6.],
       [  7.,   8.,   9.]])
>>> np.nancumsum(x)
array([  1.,   3.,   6.,  10., -inf, -inf, -inf, -inf, -inf])
>>> 
>>> x = np.arange(1, 10, dtype = np.float64).reshape(3, 3)
>>> x[1][0] = np.inf
>>> x[2][0] = -np.inf
>>> x
array([[  1.,   2.,   3.],
       [ inf,   5.,   6.],
       [-inf,   8.,   9.]])
>>> np.nancumsum(x)
array([ 1.,  3.,  6., inf, inf, inf, nan, nan, nan])