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