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

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

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

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

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

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

Содержание

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

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

# Понимание функции np.stack()
np.stack(
   arrays=,  # Массивы, которые необходимо объединить
   axis=0,   # Ось объединения (по умолчанию - ось 0)
   out=None  # Локация для хранения результата (по умолчанию - None)
)

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

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

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

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

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

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

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

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

# Стекание NumPy-массивов по строкам
import numpy as np

arr1 = np.array([1, 2, 3]) # Первый массив чисел
arr2 = np.array([4, 5, 6]) # Второй массив чисел

stacked = np.stack(arrays=[arr1, arr2]) # Объединение двух массивов по строкам
print(stacked) # Вывод объединенного массива

# Возвращает:
# [[1 2 3]
# [4 5 6]]

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

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

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

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

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

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

# Стекание массивов по столбцам при помощи 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) # Объединение двух массивов по столбцам (по умолчанию - ось 0)
print(stacked) # Вывод объединенного массива

# Возвращает:
# [[1 4]
# [2 5]
# [3 6]]

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

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

# Стекание массивов по последней оси
import numpy as np

arr1 = np.array([1, 2, 3]) # Первый массив чисел
arr2 = np.array([4, 5, 6]) # Второй массив чисел

stacked = np.stack(arrays=[arr1, arr2], axis=-1) # Объединение двух массивов по последней оси (что эквивалентно ось 1)
print(stacked) # Вывод объединенного массива

# Возвращает:
# [[1 4]
# [2 5]
# [3 6]]

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

Заключение

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

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

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

Last updated