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

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

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

* Как работает функция NumPy `stack()`
* Как складывать массивы NumPy по строкам
* Как складывать массивы NumPy по столбцам

Содержание

* [Понимание функции стека NumPy](#ponimanie-funkcii-steka-numpy)
* [Укладка массивов построчно в NumPy](#ukladka-massivov-postrochno-v-numpy)
* [Укладка массивов по столбцам в NumPy](#ukladka-massivov-po-stolbcam-v-numpy)
* [Заключение](#zaklyuchenie)
* [Дополнительные ресурсы](#dopolnitelnye-resursy)

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

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

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

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

* `arrays=` принимает последовательность структур, похожих на массивы, которые все имеют одинаковый размер
* `axis=0` принимает необязательный целочисленный аргумент. `0` обозначает первую ось, а `-1` указывает на последнее измерение.
* `out=None` указывает место назначения для размещения результирующего массива, форма которого должна совпадать

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

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

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

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

```python
# Стекание 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

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

```python
# Стекание массивов по столбцам при помощи 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`. Давайте посмотрим, как это выглядит на практике:

```python
# Стекание массивов по последней оси
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, которая позволяет объединять массивы по различным осям. Сначала вы узнали, как работает синтаксис функции. Затем вы научились использовать функцию для объединения массивов по различным осям. Наконец, вы узнали, как безопасно объединять массивы, используя отрицательную индексацию.

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

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

* [NumPy Pad: использование `np.pad()` для заполнения массивов и матриц](https://bemind.gitbook.io/neural/uchebniki-po-pandas-i-numpy/numpy/numpy-pad-ispolzovanie-np.pad-dlya-dopolneniya-massivov-i-matric)
* NumPy где: обрабатывать элементы массива условно
* [NumPy linspace: создание равномерно расположенных массивов с помощью `np.linspace`](https://bemind.gitbook.io/neural/uchebniki-po-pandas-i-numpy/numpy/numpy-linspace-sozdanie-ravnomerno-raspolozhennykh-massivov-s-pomoshyu-np.linspace)
* [Различные способы объединения массивов NumPy в Python](https://bemind.gitbook.io/neural/uchebniki-po-pandas-i-numpy/numpy/obedinenie-massivov-numpy-po-razlichnym-osyam-s-ispolzovaniem-funkcii-stack)
* [Официальная документация: стек NumPy](https://numpy.org/doc/stable/reference/generated/numpy.stack.html)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bemind.gitbook.io/neural/uchebniki-po-pandas-i-numpy/numpy/obedinenie-massivov-numpy-po-razlichnym-osyam-s-ispolzovaniem-funkcii-stack.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
