numpy.stack

numpy.stack((a1, a2, ..., aN), axis=0, out=None)

Функция numpy.stack() соединяет массивы вдоль новой оси.

Параметры:
a1, a2, ..., aN - последовательность подобных массиву объектов
Любые объекты которые могут быть преобразованы в массивы NumPy. Данные объекты должны иметь одинаковую форму (количество осей), но не размер по указанной оси.
axis - целое число (необязательный)
Определяет ось в выходном массиве вдоль которой соединяются исходные массивы. По умолчанию axis = 0, что соответствует первой оси.
out - массив NumPy (необязательный)
Массив в который будет помещен результат объединения массивов. Указанный массив должен иметь соответствующую результату объединения исходных массивов форму. Указание данного параметра, дает небольшой выигрышь в скорости, так как позволяет избежать промежуточного присваивания.
Возвращает:
ndarray - массив NumPy
Массив, у которого количество осей на единицу больше чем у исходных массивов, при этом сами исходные массивы соединены вдоль этой новой оси.
Смотрите так же: concatenate, hstack, vstack

Замечание

Важно помнить что параметр оси указывает номер оси в результирующем массиве, т.е. если указать axis = 0, то в результирующем массиве это будет первая ось, если же указать axis = -1, то последняя.

Примеры

>>> import numpy as np
>>> 
>>> a = np.full((2, 2), 0, dtype = np.int8)
>>> b = np.full((2, 2), 1, dtype = np.int8)
>>> c = np.full((2, 2), 2, dtype = np.int8)
>>> 
>>> a
array([[0, 0],
       [0, 0]], dtype=int8)
>>> 
>>> b
array([[1, 1],
       [1, 1]], dtype=int8)
>>> 
>>> c
array([[2, 2],
       [2, 2]], dtype=int8)
>>> 
>>> s0 = np.stack([a, b, c])    #  По умолчанию axis = 0
>>> s0
array([[[0, 0],
        [0, 0]],

       [[1, 1],
        [1, 1]],

       [[2, 2],
        [2, 2]]], dtype=int8)
>>> 
>>> s0.shape
(3, 2, 2)
>>> 
>>> s1 = np.stack([a, b, c], axis = 1)
>>> s1
array([[[0, 0],
        [1, 1],
        [2, 2]],

       [[0, 0],
        [1, 1],
        [2, 2]]], dtype=int8)
>>> 
>>> s1.shape
(2, 3, 2)
>>> 
>>> s2 = np.stack([a, b, c], axis = 2)
>>> s2
array([[[0, 1, 2],
        [0, 1, 2]],

       [[0, 1, 2],
        [0, 1, 2]]], dtype=int8)
>>> 
>>> s2.shape
(2, 2, 3)