numpy.cumprod

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

Функция numpy.cumprod() возвращает кумулятивное (накапливаемое) произведение элементов массива, в том числе и по заданной оси (осям).

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

Замечание

При вычислении произведения целых чисел используется модульная арифметика, поэтому при переполнении буфера ошибки не возникает. На некоторых машинах (32-бит) могут появляться неожиданные (ошибочные) результаты. Более подробно см. в замечании к функции prod.

Примеры

>>> import numpy as np
>>> 
>>> np.cumprod([])
array([], dtype=float64)
>>> np.cumprod([1])
array([1], dtype=int32)
>>> 
>>>
>>> x = np.arange(1, 6)
>>> x
array([1, 2, 3, 4, 5])
>>> np.cumprod(x)
array([  1,   2,   6,  24, 120], dtype=int32)
>>>
>>>
>>> x = np.arange(1, 9).reshape(2, 4)
>>> x
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])
>>> 
>>> np.cumprod(x)
array([    1,     2,     6,    24,   120,   720,  5040, 40320],
      dtype=int32)
>>>
>>> #  кумулятивное произведение по столбцам:
... np.cumprod(x, axis = 0)
array([[ 1,  2,  3,  4],
       [ 5, 12, 21, 32]], dtype=int32)
>>> 
>>> #  кумулятивное произведение по строкам:
... np.cumprod(x, axis = 1)
array([[   1,    2,    6,   24],
       [   5,   30,  210, 1680]], dtype=int32)