numpy.stack
numpy.stack((a1, a2, ..., aN), axis=0, out=None)
Функция stack() соединяет массивы вдоль новой оси.
-
- a1, a2, ..., aN - последовательность подобных массиву объектов
- Любые объекты которые могут быть преобразованы в массивы NumPy. Данные объекты должны иметь одинаковую форму (количество осей), но не размер по указанной оси.
- axis - целое число (необязательный)
- Определяет ось в выходном массиве вдоль которой соединяются исходные массивы. По умолчанию
axis = 0
, что соответствует первой оси. - out - массив NumPy (необязательный)
- Массив в который будет помещен результат объединения массивов. Указанный массив должен иметь соответствующую результату объединения исходных массивов форму. Указание данного параметра, дает небольшой выигрышь в скорости, так как позволяет избежать промежуточного присваивания.
-
- ndarray - массив NumPy
- Массив, у которого количество осей на единицу больше чем у исходных массивов, при этом сами исходные массивы соединены вдоль этой новой оси.
Замечание
Важно помнить что параметр оси указывает номер оси в результирующем массиве, т.е. если указать 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)