Вычисления нарастающим итогом с функцией numpy.cumsum()

Опубликован: 18.12.2023 88

Вычисления нарастающим итогом суммы элементов числовой последовательности является довольно частой операцией в аналитических и экономических расчетах.

Для быстрого и удобного выполнения таких расчетов Python предоставляет различные инструменты, в том числе:

  • функцию cumsum() из библиотеки NumPy;
  • функцию accumulate() встроенного модуля itertools (подробнее можно посмотреть здесь).

Функция numpy.cumsum() принимает в качестве обязательного аргумента массив числовых данных и возвращает кумулятивную сумму элементов по заданной оси (т.е. сумму элементов нарастающим итогом).

Синтаксис: numpy.cumsum( arr, axis=None, dtype=None, out=None )

  • arr - массив числовых данных, используемый для расчета суммы нарастающим итогом;
  • axis - ось массива, вдоль которой вычисляется кумулятивная сумма элементов (по умолчанию None);
  • dtype - тип выходных данных;
  • out - место сохранения выходного массива.

Примеры использования функции numpy.cumsum() для расчетов кумулятивной суммы элементов числовой последовательности:

import numpy as np

# сумма нарастающим итогом целых чисел от 0 до 15
result = list(np.cumsum(range(0, 15)))
print(result)
[0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105]

# сумма элементов плоского массива нарастающим итогом
arr = np.array([5, 8, 12, 17, 19, 25])
result = np.cumsum(arr)
print(result)
[ 5 13 25 42 61 86]

# сумма элементов  2D массива нарастающим итогом построчно
arr = np.array([[1, 4, 0], 
                         [7, 0, 9], 
                         [5, 0, 3], 
                         [12, 0, 5]])

result = np.cumsum( arr, axis=1 )  # axis по оси равной 1 (построчно)
print(result)
[[ 1  5  5]
 [ 7  7 16]
 [ 5  5  8]
 [12 12 17]]

Таким образом, функция numpy.cumsum() позволяет легко вычислять кумулятивную сумму элементов числовой последовательности или массива, с указанием оси (направления) массива для вычисления суммы элементов нарастающим итогом.

Похожие посты

Методы преобразования списка в строку и обратно

Удаление дубликатов из списка

Фильтрация элементов итератора с помощью bool-списка функции itertools.compress()

Пропуск не нужных элементов последовательности с помощью itertools.dropwhile()

Комментариев нет.