У меня есть 2d массив с формой (x, y), который я хочу преобразовать в 3d-массив с формой (x, y, 1). Есть ли хороший Pythonic способ сделать это?
Как сделать массив 2d numpy 3D-массивом?
Ответ 1
В дополнение к другим ответам вы также можете использовать нарезку с numpy.newaxis
:
>>> from numpy import zeros, newaxis
>>> a = zeros((6, 8))
>>> a.shape
(6, 8)
>>> b = a[:, :, newaxis]
>>> b.shape
(6, 8, 1)
Или даже это (что будет работать с произвольным числом измерений):
>>> b = a[..., newaxis]
>>> b.shape
(6, 8, 1)
Ответ 2
numpy.reshape(array, array.shape + (1,))
Ответ 3
import numpy as np
a= np.eye(3)
print a.shape
b = a.reshape(3,3,1)
print b.shape