Конструировать 3d-массив в numpy из существующего массива 2d
Во время подготовки данных для вычисления NumPy. Мне интересно, как построить:
myarray.shape => (2,18,18)
from:
d1.shape => (18,18)
d2.shape => (18,18)
Я пытаюсь использовать команду NumPy:
hstack([[d1],[d2]])
но это выглядит не сработало!
Ответы
Ответ 1
hstack и vstack не изменяют количество измерений массивов: они просто ставят их "рядом". Таким образом, объединение двумерных массивов создает новый 2-мерный массив (а не трехмерный).
Вы можете сделать то, что предложил Даниэль (напрямую используйте 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
), который вам нужен.
Ответ 2
Просто для меня работает d3 = array([d1,d2])
:
>>> from numpy import array
>>> # ... create d1 and d2 ...
>>> d1.shape
(18,18)
>>> d2.shape
(18,18)
>>> d3 = array([d1, d2])
>>> d3.shape
(2, 18, 18)
Ответ 3
у меня есть более 1000 двухмерных данных, я хочу сохранить эти данные в 3-х мерном массиве.
Ответ 4
arr3=np.dstack([arr1, arr2])
arr1, arr2 - это двумерная shape (256,256)
массива shape (256,256)
, arr3: shape(256,256,2)