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