如何在numpy数组中添加维? (125,125)至(125,125,1)

时间:2019-01-14 06:10:52

标签: python numpy

我正在使用OpenCV python加载图像作为灰度图像,因为该图像的形状为(125, 125)。但是,我需要将形状设为(125, 125, 1),其中1表示通道数(因为是灰度,所以1)。

img = cv2.imread('/path/to/image.png', 0)
print(img.shape)
# prints (125, 125)

现在,我需要将img的形状转换为(125, 125, 1)

3 个答案:

答案 0 :(得分:3)

最简单的方法是使用numpy indexing and np.newaxis

img = np.ones((125, 125)) # img.shape: (125, 125)
img_3d = img[..., np.newaxis] # img_3d.shape: (125, 125, 1)

如果只需要额外的维度即可将数据传递给另一个函数,则这特别方便,因此您只需传递花式索引数组即可。

答案 1 :(得分:2)

尝试np.expand_dims

In [1]: import numpy as np

In [2]: img = np.ones((125, 125))

In [3]: img.shape
Out[3]: (125, 125)

In [4]: img = np.expand_dims(img, axis=-1)

In [5]: img.shape
Out[5]: (125, 125, 1)

答案 2 :(得分:0)

import numpy as np
a = np.random.rand(5,5)
b = a.reshape(5,5,1) 
b = a.reshape(1,5,5)
b = a.reshape(1,5,5,1)

任何想要的形状