У меня есть некоторые проблемы с пониманием того, что делает функция numpy dstack
. Документация довольно скудная и просто говорит:
Массивы стека в последовательности глубины (вдоль третьей оси).
Принимает последовательность массивов и складывает их вдоль третьей оси для создания единого массива. Перестраивает массивы, деленные на
dsplit
. Это простой способ укладывать 2D-массивы (изображения) в один 3D-массив для обработки.
Итак, либо я действительно глуп, и смысл этого очевиден, либо у меня, похоже, есть неправильное представление о терминах "укладка", "в последовательности", "глубина" или "вдоль оси". Тем не менее, у меня создалось впечатление, что я правильно поняла эти термины в контексте vstack
и hstack
.
Возьмем этот пример:
In [193]: a
Out[193]:
array([[0, 3],
[1, 4],
[2, 5]])
In [194]: b
Out[194]:
array([[ 6, 9],
[ 7, 10],
[ 8, 11]])
In [195]: dstack([a,b])
Out[195]:
array([[[ 0, 6],
[ 3, 9]],
[[ 1, 7],
[ 4, 10]],
[[ 2, 8],
[ 5, 11]]])
Прежде всего, a
и b
не имеют третьей оси, поэтому как бы я их складывал по "третьей оси" для начала? Во-вторых, если предположить, что a
и b
являются представлениями 2D-изображений, почему в итоге я получаю три 2D-массива в результате вместо двух 2D-массивов "в последовательности"?