hstack и vstack не меняют количество измерений массивов: они просто помещают их «рядом». Таким образом, объединение 2-мерных массивов создает новый 2-мерный массив (а не 3D!).
Вы можете сделать то, что предложил Даниил (напрямую используйте numpy.array([d1, d2])
).
Вы можете альтернативно преобразовать свои массивы в 3D-массивы перед их наложением, добавив новое измерение в каждый массив:
d3 = numpy.vstack([ d1[newaxis,...], d2[newaxis,...] ]) # shape = (2, 18, 18)
Фактически, d1[newaxis,...].shape == (1, 18, 18)
, и вы можете сложить оба 3D-массива напрямую и получить новый 3D-массив (d3
), который вы хотели.