Объединение массивов NumPy по различным осям с использованием функции stack

В этом учебнике вы узнаете, как использовать функцию NumPy stack() для объединения массивов NumPy по различным осям. NumPy — это необходимая библиотека Python для всех, кто работает с данными в Python. Функция stack() NumPy позволяет объединять массивы NumPy различными способами, вдоль осей NumPy.

К концу этого учебного пособия вы узнаете:

  • Как работает функция NumPy stack()

  • Как складывать массивы NumPy по строкам

  • Как складывать массивы NumPy по столбцам

Содержание

Понимание функции стека NumPy

Перед тем как погрузиться в изучение использования функции stack() в NumPy, вы узнаете о различных параметрах, которые предлагает эта функция. Мы рассмотрим, как выглядит функция и как использовать разные параметры для настройки поведения функции.

# Understanding the np.stack() Function
np.stack(
   arrays=,
   axis=0,
   out=None
)

На основе приведенного выше блока кода мы можем видеть, что функция принимает три параметра - из которых только один является обязательным. Давайте более подробно рассмотрим эти параметры:

  • arrays= принимает последовательность структур, похожих на массивы, которые все имеют одинаковый размер

  • axis=0 принимает необязательный целочисленный аргумент. 0 обозначает первую ось, а -1 указывает на последнее измерение.

  • out=None указывает место назначения для размещения результирующего массива, форма которого должна совпадать

Теперь, когда вы поняли, как работает функция, давайте рассмотрим несколько примеров её использования.

Укладка массивов построчно в NumPy

В этом разделе вы научитесь складывать массивы NumPy построчно. Это означает, что вы, по сути, конкатенируете массивы один за другим. Таким образом, мы складываем наши массивы вдоль 0-й оси, которая является параметром по умолчанию функции np.stack()

Давайте посмотрим, как это выглядит на примере:

# Stacking NumPy Arrays Row-Wise
import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

stacked = np.stack(arrays=[arr1, arr2])
print(stacked)

# Returns:
# [[1 2 3]
#  [4 5 6]]

Давайте разберем, что делает наш код выше:

  1. Мы создали два массива, arr1 и arr2, которые содержат числа с 1 по 3 и с 4 по 6 соответственно.

  2. Мы затем создали новый массив, stacked, который был результатом использования функции np.stack() для двух массивов.

По умолчанию NumPy объединяет два массива по 0-й оси. В данном случае это означает, что мы объединяем два массива построчно. В следующем разделе вы узнаете, как изменить это поведение и научитесь объединять массивы вдоль разных осей.

Укладка массивов по столбцам в NumPy

В этом разделе вы узнаете, как складывать массивы вдоль различных осей. Мы можем рассматривать это как столбцовое складывание массивов. Это лучше объяснить на примере. Давайте рассмотрим складывание наших двух массивов вдоль первой оси:

# Stacking Arrays Column-Wise with np.stack()
import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

stacked = np.stack(arrays=[arr1, arr2], axis=1)

print(stacked)

# Returns:
# [[1 4]
#  [2 5]
#  [3 6]]

Мы видим, что массивы складываются по каждому элементу, в результате чего получаются массивы, содержащие значения из каждого «столбца» исходных массивов.

Одной из великолепных возможностей функции np.stack(), которую мы можем использовать, является свертывание значений вдоль последней оси с помощью передачи -1. В данном случае наша последняя ось - 1, но для надежности мы можем просто передать -1. Давайте посмотрим, как это выглядит на практике:

# Stacking Arrays Along the Last Axis
import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

stacked = np.stack(arrays=[arr1, arr2], axis=-1)

print(stacked)

# Returns:
# [[1 4]
#  [2 5]
#  [3 6]]

В этом случае возвращается тот же массив. Это позволяет нам более безопасно выполнять наш код, гарантируя, что мы используем существующую ось!

Заключение

В этом учебнике вы узнали, как использовать функцию стека NumPy, которая позволяет объединять массивы по различным осям. Сначала вы узнали, как работает синтаксис функции. Затем вы научились использовать функцию для объединения массивов по различным осям. Наконец, вы узнали, как безопасно объединять массивы, используя отрицательную индексацию.

Дополнительные ресурсы

Чтобы узнать больше о связанных темах, ознакомьтесь с приведенными ниже руководствами:

  • NumPy Pad: использование np.pad() для заполнения массивов и матриц

  • NumPy где: обрабатывать элементы массива условно

  • NumPy linspace: создание равномерно расположенных массивов с помощью np.linspace

  • Различные способы объединения массивов NumPy в Python

Last updated