NumPy cumsum: Расчет кумулятивных сумм массивов NumPy
Функция cumsum в NumPy используется для вычисления кумулятивной суммы элементов в массиве NumPy по указанной оси. В этом руководстве вы узнаете, как использовать функцию cumsum в NumPy для вычисления кумулятивных сумм массивов. Функция позволяет вам указать ось, по которой будут вычисляться суммы, а также тип данных результирующего массива.
К концу этого урока вы узнаете:
Как понять функцию NumPy
cumsum()
Как вычислить совокупные суммы одномерных и двумерных массивов NumPy
Как указать ось, по которой рассчитывать накопленные суммы
Как указать тип данных накопительных сумм в NumPy
Оглавление
Понимание функции cumsum NumPy
Перед тем как погрузиться в то, как использовать функцию cumsum()
в NumPy, давайте рассмотрим, из чего состоит эта функция. Мы быстро ознакомимся с различными параметрами функции и их аргументами по умолчанию (если таковые имеются). Это даст вам хорошее представление о том, что ожидать в плане возможностей настройки кумулятивных сумм, которые вы можете рассчитать с помощью NumPy.
Функция np.cumsum()
вычисляет накопленную сумму элементов вдоль указанной оси массива.
Возвращает массив той же формы, что и входной, содержащий накопленные суммы элементов вдоль указанной оси.
В таблице ниже представлены параметры и аргументы по умолчанию функции NumPy cumsum()
:
a=
Входной массив
N/A
array like
axis=
Ось, по которой рассчитывается совокупная сумма. По умолчанию NumPy сглаживает массив.
None
int
dtype=
Тип возвращаемого массива.
None
dtype
out=
Альтернативный выходной массив, в который можно поместить результат.
None
ndarray
Теперь, когда у вас есть глубокое понимание функции, давайте посмотрим, как вы можете вычислять кумулятивные суммы одномерных массивов NumPy.
Вычисление совокупных сумм одномерных массивов NumPy
Чтобы рассчитать накопленную сумму одномерного массива, вы можете просто передать массив в функцию np.cumsum()
. Это вернет массив той же длины, содержащий значения накопленных сумм. Давайте посмотрим, как это выглядит:
Этот код вычисляет накопленные суммы элементов одномерного массива arr
с помощью функции np.cumsum()
.
Давайте разберем, что мы сделали в приведенном выше коде:
Мы использовали функцию
np.arange()
для возвращения массива, содержащего значения от 0 до 4Мы передали этот массив в функцию
np.cumsum()
для вычисления кумулятивных сумм.
В следующем разделе вы узнаете, как вычислять кумулятивные суммы для списков в Python.
Использование NumPy cumsum для расчета совокупных сумм списков Python
Функция cumsum в NumPy ожидает для своей работы объект, похожий на массив. Это означает, что мы также можем вычислять кумулятивные суммы значений списка Python. Давайте посмотрим, как это выглядит:
Этот код вычисляет накопленные суммы элементов списка values
с помощью функции np.cumsum()
. На выходе получается массив NumPy с накопленными суммами.
В приведенном выше коде мы генерируем список значений от 0 до 4. Затем мы передаем этот список в функцию np.cumsum()
. Это возвращает массив NumPy кумулятивных значений. Чтобы вернуть список значений, вы можете просто передать этот массив в конструктор
Вычисление совокупных сумм двумерных массивов NumPy
Функция np.cumsum()
также позволяет передавать двумерные массивы. Давайте посмотрим, что происходит, когда мы передаем в неё двумерный массив NumPy:
Этот код вычисляет накопленные суммы элементов двумерного массива arr
с помощью функции np.cumsum()
. Функция рассматривает двумерный массив как одномерный массив, выпрямляя его перед вычислением накопленной суммы.
Этот результат может вас удивить: по умолчанию функция cumsum в NumPy будет преобразовывать двумерный массив в одномерный, если не указана ось. Из-за этого функция сначала преобразует двумерный массив в одномерный, а затем возвращает кумулятивную сумму. Давайте посмотрим, как это выглядит, когда мы указываем ось.
Изменение оси в NumPy cumsum
NumPy предоставляет как первую, так и вторую оси. Первая ось представляет собой "столбцы" массива, в то время как вторая ось представляет "строки" массива.
Вычисляя кумулятивные суммы по 0-й оси, вы получаете массив того же размера и формы. В этом массиве суммы вычисляются "вниз" по столбцам, как показано ниже
Этот код вычисляет накопленные суммы элементов двумерного массива arr
по оси 0 с помощью функции np.cumsum()
. Каждый элемент результата является суммой элементов вдоль оси 0, начиная с первого элемента и заканчивая текущим элементом.
Аналогичным образом мы можем рассчитать кумулятивные суммы по 1-му измерению. Это дает кумулятивные суммы по "строкам" массива. Давайте посмотрим, как это выглядит:
Этот код вычисляет накопленные суммы элементов двумерного массива arr
по оси 1 с помощью функции np.cumsum()
. Каждый элемент результата является суммой элементов вдоль оси 1, начиная с первого элемента и заканчивая текущим элементом.
Мы видим, что это работает очень похожим образом. Функция возвращает массив той же формы и размера, в данном случае 2 на 3. Значения вычисляются по строкам.
В следующем разделе вы узнаете, как изменить тип данных результирующего массива.
Изменение типа данных при вычислении накопительных сумм NumPy
По умолчанию NumPy вернет массив, соответствующий наименьшему общему типу данных, найденному в массиве. Мы можем изменить тип данных массива, передав тип данных в параметр dtype=
. В массиве, который мы использовали, все значения являются целыми числами. Давайте укажем, что мы хотим, чтобы результирующий тип данных был вещественными числами:
Этот код вычисляет накопленные суммы элементов одномерного массива arr
, используя тип данных float
, с помощью функции np.cumsum()
.
Мы видим, что результаты кумулятивных сумм такие же, как и ранее, однако каждое значение теперь представляет собой число с плавающей точкой, а не целое число.
Заключение
В этом учебном пособии вы научились вычислять кумулятивные суммы с помощью функции cumsum()
библиотеки NumPy. Сначала вы изучили, как работает функция, рассмотрев ее параметры и аргументы по умолчанию. Затем вы научились вычислять кумулятивные суммы одномерных массивов и списков Python. После этого вы научились вычислять кумулятивные суммы двумерных массивов, включая изменение осей. Наконец, вы научились изменять типы данных результирующих массивов.
Дополнительные ресурсы
Чтобы узнать больше о смежных темах, ознакомьтесь с нижеприведенными учебными материалами:
4 способа расчета совокупной суммы Pandas
Last updated