РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
400 of 541 menu

Метод cumsum

Метод cumsum класса ndarray вычисляет кумулятивную сумму элементов массива. Кумулятивная сумма - это последовательность частичных сумм, где каждый элемент равен сумме всех предыдущих элементов включая текущий. Метод может применяться ко всему массиву или вдоль указанной оси. Результатом является новый массив, содержащий накопленные суммы.

Синтаксис

arr.cumsum([axis, dtype, out])

Параметры метода:

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

Пример

Давайте вычислим кумулятивную сумму для одномерного массива:

import numpy as np arr = np.array([1, 2, 3, 4, 5]) res = arr.cumsum() print(res)

Результат выполнения кода:

[ 1 3 6 10 15]

Каждый элемент результата - это сумма всех предыдущих элементов плюс текущий: 1, 1+2=3, 1+2+3=6, 1+2+3+4=10, 1+2+3+4+5=15.

Пример

Вычислим кумулятивную сумму вдоль разных осей для двумерного массива:

import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) # Вдоль оси 0 (по столбцам) res0 = arr.cumsum(axis=0) print('axis=0:') print(res0) # Вдоль оси 1 (по строкам) res1 = arr.cumsum(axis=1) print('axis=1:') print(res1)

Результат выполнения кода:

axis=0: [[1 2 3] [5 7 9]] axis=1: [[ 1 3 6] [ 4 9 15]]

При axis=0 суммирование происходит по строкам (вертикально): каждый столбец суммируется независимо. При axis=1 суммирование происходит по столбцам (горизонтально) для каждой строки отдельно.

Пример

Используем параметр dtype для изменения типа данных результата:

import numpy as np arr = np.array([1, 2, 3, 4, 5], dtype=np.float32) res = arr.cumsum(dtype=np.float64) print(res) print(res.dtype)

Результат выполнения кода:

[ 1. 3. 6. 10. 15.] float64

Исходный массив имеет тип float32, а результат приведён к float64. Это полезно, когда нужно избежать переполнения или повысить точность вычислений.

Пример

Вычислим кумулятивную сумму для многомерного массива без указания оси:

import numpy as np arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) res = arr.cumsum() print(res)

Результат выполнения кода:

[ 1 3 6 10 15 21 28 36]

Без указания оси массив выравнивается в одномерный, и кумулятивная сумма вычисляется по всем элементам.

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

  • метод cumprod,
    который вычисляет кумулятивное произведение элементов массива
  • метод sum,
    который вычисляет сумму всех элементов массива или вдоль оси
  • метод prod,
    который вычисляет произведение всех элементов массива или вдоль оси
  • метод mean,
    который вычисляет среднее арифметическое элементов массива
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить