numpy.cumprod
numpy.cumprod(a, axis=None, dtype=None, out=None)
Функция cumprod() возвращает кумулятивное (накапливаемое) произведение элементов массива, в том числе и по заданной оси (осям).
-
- a - подобный массиву объект или массив NumPy
- Указанный объект или массив может состоять из любого доступного в NumPy числового типа.
- axis - None, целое число или кортеж целых чисел (необязательный аргумент)
- Данный параметр указывает номер оси или номера осей массива по которым выполняется произведение его элементов. По умолчанию
axis = None
, что соответствует кумулятивному перемножению всех элементов массива. Если указано отрицательное число, то номер оси отсчитывается от последней оси по направлению к первой. Если указан кортеж целых чисел, то кумулятивное произведение выполняется по всем указанным осям. - dtype - тип данных NumPy (необязательный аргумент)
- Данный параметр указывает тип данных возвращаемого массива а так же тип накапливающего сумматора, в котором происходит умножение элементов. По умолчанию
dtype = None
, что соответствует типу данных входного массива. - out - массив Numpy (необязательный аргумент)
- Указывает массив в который будет помещен результат работы функции. Данный массив должен иметь форму идентичную массиву с результатом работы функции. Подробнее о данном параметре смотрите на странице универсальные функции в разделе out.
-
- результат - число или массив NumPy
- Массив в котором каждый элемент является произведением предшествующих ему элементов в исходном массиве или элементов вдоль указанной оси исходного массива.
Замечание
При вычислении произведения целых чисел используется модульная арифметика, поэтому при переполнении буфера ошибки не возникает. На некоторых машинах (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)