numpy.cumsum#

numpy.cumsum(a, ось=None, dtype=None, выход=None)[источник]#

Вернуть кумулятивную сумму элементов вдоль заданной оси.

Параметры:
aarray_like

Входной массив.

осьint, необязательный

Ось, по которой вычисляется кумулятивная сумма. По умолчанию (None) вычисляется сумма по сглаженному массиву.

dtypedtype, опционально

Тип возвращаемого массива и аккумулятора, в котором суммируются элементы. Если dtype не указан, по умолчанию используется dtype a, если только a имеет целочисленный dtype с точностью меньше, чем у целого числа платформы по умолчанию. В этом случае используется целое число платформы по умолчанию.

выходndarray, необязательно

Альтернативный выходной массив для размещения результата. Он должен иметь ту же форму и длину буфера, что и ожидаемый вывод, но тип будет приведён при необходимости. См. Определение типа вывода для получения дополнительной информации.

Возвращает:
cumsum_along_axisndarray.

Новый массив с результатом возвращается, если только выход указан, в этом случае ссылка на выход возвращается. Результат имеет тот же размер, что и a, и той же формы, что и a if ось не равно None или a является одномерным массивом.

Смотрите также

cumulative_sum

Совместимая альтернатива Array API для cumsum.

sum

Суммирует элементы массива.

trapezoid

Интеграция значений массива с использованием составного правила трапеций.

diff

Вычислить n-ю дискретную разность вдоль заданной оси.

Примечания

Арифметика является модульной при использовании целочисленных типов, и при переполнении ошибка не возникает.

cumsum(a)[-1] может не равняться sum(a) для значений с плавающей точкой, так как sum может использовать попарную процедуру суммирования, уменьшая ошибку округления. См. sum для получения дополнительной информации.

Примеры

>>> import numpy as np
>>> a = np.array([[1,2,3], [4,5,6]])
>>> a
array([[1, 2, 3],
       [4, 5, 6]])
>>> np.cumsum(a)
array([ 1,  3,  6, 10, 15, 21])
>>> np.cumsum(a, dtype=float)     # specifies type of output value(s)
array([  1.,   3.,   6.,  10.,  15.,  21.])
>>> np.cumsum(a,axis=0)      # sum over rows for each of the 3 columns
array([[1, 2, 3],
       [5, 7, 9]])
>>> np.cumsum(a,axis=1)      # sum over columns for each of the 2 rows
array([[ 1,  3,  6],
       [ 4,  9, 15]])

cumsum(b)[-1] может не равняться sum(b)

>>> b = np.array([1, 2e-9, 3e-9] * 1000000)
>>> b.cumsum()[-1]
1000000.0050045159
>>> b.sum()
1000000.0050000029