numpy.dstack()
Функция numpy.dstack() соединяет последовательность массивов вдоль третьей оси (depth). Полезна для сборки многоканальных данных, например, цветовых каналов изображения в один RGB-массив.
Сигнатура
numpy.dstack(tup)
Параметры
tup— последовательность массивов (кортеж или список). Они должны иметь совместимые формы по первым двум осям.
Возвращаемое значение
ndarray — массив, полученный соединением входов по третьей оси. 1D-массивы становятся (1, N, k), 2D — (M, N, k), где k — число входных массивов.
Примеры
Пример 1. Объединение 1D-массивов.
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
res = np.dstack((a, b))
print(res)
print("shape:", res.shape)
[[[1 4]
[2 5]
[3 6]]]
shape: (1, 3, 2)
Пример 2. Сборка RGB из трёх каналов.
R = np.array([[255, 0], [128, 64]])
G = np.array([[0, 255], [128, 64]])
B = np.array([[0, 0], [255, 64]])
rgb = np.dstack((R, G, B))
print(rgb.shape)
print(rgb[0, 0]) # пиксель (0,0)
(2, 2, 3)
[255 0 0]
Пример 3. Объединение 2D-массивов.
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
print(np.dstack((a, b)))
[[[1 5]
[2 6]]
[[3 7]
[4 8]]]
Пример 4. Сборка серии кадров с камеры.
frame1 = np.zeros((2, 3), dtype=int)
frame2 = np.ones((2, 3), dtype=int)
video = np.dstack((frame1, frame2))
print("shape видео:", video.shape)
shape видео: (2, 3, 2)
Пример 5. Координаты точек (x, y, z).
x = np.array([1, 2, 3])
y = np.array([4, 5, 6])
z = np.array([7, 8, 9])
points = np.dstack((x, y, z))
print(points)
[[[1 4 7]
[2 5 8]
[3 6 9]]]
См. также
Примечание
Лицензия и источники
Техническое описание функции адаптировано из официальной документации NumPy (https://numpy.org/doc/stable/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.