Функция hstack
Функция hstack (от horizontal stack) выполняет горизонтальное объединение массивов, присоединяя их друг к другу вдоль второй оси (по столбцам). Для одномерных массивов она объединяет их в один длинный одномерный массив. Для двумерных массивов важно, чтобы количество строк у всех объединяемых массивов совпадало. Функция принимает кортеж или список массивов в качестве первого параметра и возвращает новый массив, содержащий все данные в горизонтальном порядке.
Синтаксис
np.hstack(tup)
Параметры:
-
tup- последовательность массивов (кортеж или список), которые необходимо объединить по горизонтали.
Возвращаемое значение - новый массив ndarray, являющийся результатом горизонтальной конкатенации.
Пример объединения одномерных массивов
Создадим два одномерных массива и объединим их с помощью hstack:
import numpy as np
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([6, 7, 8, 9, 10])
res = np.hstack((arr1, arr2))
print(res)
Результат выполнения кода:
[ 1 2 3 4 5 6 7 8 9 10]
Одномерные массивы просто склеиваются в один более длинный массив.
Пример объединения двумерных массивов
Создадим два двумерных массива с одинаковым количеством строк и объединим их по горизонтали:
import numpy as np
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([[7, 8], [9, 10]])
res = np.hstack((arr1, arr2))
print(res)
Результат выполнения кода:
[[ 1 2 3 7 8]
[ 4 5 6 9 10]]
Второй массив был добавлен справа к первому, количество строк сохранилось, а столбцы объединились.
Пример с тремя массивами
Объединим три двумерных массива, чтобы увидеть, как они выстраиваются в ряд:
import numpy as np
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6, 7], [8, 9, 10]])
arr3 = np.array([[11], [12]])
res = np.hstack((arr1, arr2, arr3))
print(res)
Результат выполнения кода:
[[ 1 2 5 6 7 11]
[ 3 4 8 9 10 12]]
Все три массива были объединены в один по горизонтали, при этом их строки остались на тех же местах.
Пример с изменением формы перед объединением
Иногда требуется изменить форму массивов перед объединением. Например, превратим одномерный массив в двумерный столбец и объединим:
import numpy as np
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([6, 7, 8, 9, 10])
# Преобразуем в столбцы (двумерные массивы с одним столбцом)
col1 = arr1.reshape(-1, 1)
col2 = arr2.reshape(-1, 1)
res = np.hstack((col1, col2))
print(res)
Результат выполнения кода:
[[ 1 6]
[ 2 7]
[ 3 8]
[ 4 9]
[ 5 10]]
Теперь мы получили двумерный массив, где каждый столбец соответствует одному из исходных массивов.
Смотрите также
-
функцию
vstack,
которая объединяет массивы по вертикали (по строкам) -
функцию
concatenate,
которая объединяет массивы по заданной оси -
функцию
column_stack,
которая объединяет одномерные массивы как столбцы -
функцию
stack,
которая объединяет массивы по новой оси