Python: Numpy
2026-02-26 19:01 Diff

Объединение данных в единую структуру — это операция, с которой сталкиваются при поступлении данных. С помощью нее мы можем объединять данные из разных источников, а также асинхронные ответы сервера и результаты параллельных и последовательных вычислений. В стандартном Python есть структуры данных list и set. Их можно объединять с помощью append() и update(). Еще можно использовать функцию zip() — она нужна для попарного объединения значений. В Numpy это работает по-другому.

Массивы numpy.ndarray поддерживают сценарии объединения массивов различной размерности по разным осям индексов. Для этого используются четыре метода:

  • Конкатенация — concatenate()
  • Объединение массивов по горизонтали — hstack()
  • Объединение массивов по вертикали — vstack()
  • Попарное объединение элементов списков — column_stack()

В этом уроке мы рассмотрим правила их применения и узнаем, какие нюансы нужно учитывать в работе с ними.

Одномерные структуры данных

Начнем с одномерных структур данных, потому что они встречаются чаще всего.

Объединение списков значений в Python делаются операцией +. В Numpy ту же роль выполняют методы concatenate() и hstack():

Обратите внимание, что в примере выше мы объединили массивы по горизонтали. Для этого мы использовали метод hstack() (сокращение от английского horisontal stack).

А теперь попробуем объединить массивы в вертикальном направлении. Здесь понадобится метод vstack() (от англ. vertical stack). Для вертикального объединения также подойдет инициализация нового массива из списка исходных массивов. Этот подход аналогичен формированию списка списков:

Еще одна удобная и распространенная операция — попарное объединение элементов списков. Как уже говорили, в стандартном Python для этой цели используется метод zip().

В Numpy используется аналог — метод column_stack():

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

Двумерные структуры данных

Попробуем объединить двумерные структуры — матрицы. Это можно сделать в двух направлениях.

В этом примере мы объединим данные по вертикали:

Также можно объединять данные по горизонтали:

Все примеры выше демонстрировали объединение двух массивов. Однако массивов может быть больше.

Многомерные структуры данных

Предположим, что в результате асинхронных запросов к серверу было получено три списка значений для трех дней продаж магазина. Чтобы объединить ответы сервера в единую таблицу, можно использовать все те же методы:

Запросы к серверу могут быть не по дням, а по магазинам. В этом случае также применимы методы объединения:

В примере выше используется транспонирование матрицы. Результат транспонирования — это матрица, в которой столбцы исходной таблицы становятся строками.

Посмотрим на исходную матрицу:

А теперь сравним ее с транспонированной:

Выводы

В этом уроке мы рассмотрели методы объединения массивов numpy.ndarray. Все методы работают для данных с разной размерностью: одномерными, двумерными и многомерными. При этом на вход методы могут получать любое количество массивов.

Чтобы выбрать правильный метод объединения, проговорите про себя, что нужно сделать:

  • Если горизонтально состыковать массивы, используем hstack()
  • Если вертикально состыковать массивы, используем vstack()
  • Если объединить значений поэлементно из нескольких колонок, используем column_stack()