您需要使用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]])
0
假设我有一个彩色图像,这自然将由python中的3维数组表示,例如形状(nxmx 3),并将其称为img。
我想要一个新的二维数组,将其称为“ narray”,其形状为(3,nxm),以便该数组的每一行分别包含R,G和B通道的“扁平化”版本。而且,它应该具有可以像
问题是如何从“ img”构造“ narray”?简单的img.reshape(3,-1)不起作用,因为元素的顺序对我而言并不理想。
谢谢