numpy与Python:将3D数组转换为2D
computer-vision
image-processing
numpy
python
6
0

假设我有一个彩色图像,这自然将由python中的3维数组表示,例如形状(nxmx 3),并将其称为img。

我想要一个新的二维数组,将其称为“ narray”,其形状为(3,nxm),以便该数组的每一行分别包含R,G和B通道的“扁平化”版本。而且,它应该具有可以像

narray[0,].reshape(img.shape[0:2])    #so this should reconstruct back the R channel.

问题是如何从“ img”构造“ narray”?简单的img.reshape(3,-1)不起作用,因为元素的顺序对我而言并不理想。

谢谢

参考资料:
Stack Overflow
收藏
评论
共 1 个回答
高赞 时间 活跃

您需要使用np.transpose重新排列尺寸。现在, nxmx 3将转换为3 x (n*m) ,因此将最后一个轴发送到前面,并按剩余轴的顺序(0,1)右移。最后,重塑为3行。因此,实施将是-

img.transpose(2,0,1).reshape(3,-1)

样品运行-

In [16]: img
Out[16]: 
array([[[155,  33, 129],
        [161, 218,   6]],

       [[215, 142, 235],
        [143, 249, 164]],

       [[221,  71, 229],
        [ 56,  91, 120]],

       [[236,   4, 177],
        [171, 105,  40]]])

In [17]: img.transpose(2,0,1).reshape(3,-1)
Out[17]: 
array([[155, 161, 215, 143, 221,  56, 236, 171],
       [ 33, 218, 142, 249,  71,  91,   4, 105],
       [129,   6, 235, 164, 229, 120, 177,  40]])
收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号