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.