Метод accumulate класса ufunc
Метод accumulate класса ufunc применяет универсальную функцию к элементам массива последовательно,
сохраняя результат каждого промежуточного вычисления. В результате получается массив той же длины,
что и исходный, где каждый элемент содержит накопленный результат для предыдущих элементов.
Этот метод особенно полезен для операций кумулятивного суммирования, произведения или других бинарных операций.
Синтаксис
ufunc.accumulate(array, axis=0, dtype=None, out=None)
Параметры метода:
-
array- входной массив, к элементам которого применяется накопление. -
axis- ось, вдоль которой выполняется накопление (по умолчанию 0). -
dtype- желаемый тип данных для результата. -
out- массив для записи результата.
Метод возвращает массив с накопленными результатами.
Пример
Выполним кумулятивное суммирование элементов одномерного массива:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
res = np.add.accumulate(arr)
print(res)
Результат выполнения кода:
[ 1 3 6 10 15]
Каждый элемент результата содержит сумму всех предыдущих элементов включая текущий.
Пример
Выполним кумулятивное произведение элементов массива:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
res = np.multiply.accumulate(arr)
print(res)
Результат выполнения кода:
[ 1 2 6 24 120]
Пример
Используем накопление вдоль строк для двумерного массива:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
res = np.add.accumulate(arr, axis=0)
print(res)
Результат выполнения кода:
[[1 2 3]
[5 7 9]]
В результате каждый элемент во второй строке содержит сумму элементов первого и второго столбцов.
Пример
Используем накопление вдоль столбцов для двумерного массива:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
res = np.add.accumulate(arr, axis=1)
print(res)
Результат выполнения кода:
[[ 1 3 6]
[ 4 9 15]]
Пример
Применим накопление с указанием типа данных результата:
import numpy as np
arr = np.array([1, 2, 3, 4, 5], dtype=np.float32)
res = np.add.accumulate(arr, dtype=np.float64)
print(res.dtype)
print(res)
Результат выполнения кода:
float64
[ 1. 3. 6. 10. 15.]