![](/img/trans.png)
[英]How to go from Python numpy 3D array to 2D to 1D back to 2D (preserving the original 2nd and 3rd dimension of the 3D array)
[英]Pythonic way to assign 3rd Dimension of Numpy array to 1D Array
我试图将已转换为3D numpy数组的图像展平为三个单独的1D数组,分别表示RGB通道。
图像数组的形状是(HEIGHT,WIDTH,RGB),并且我尝试使用索引切片和解压缩来仅返回第3维值是徒劳的。
理想情况下,三个独立的阵列代表每个RGB通道,
例:
print(image)
[
[ [56, 6, 3], [23, 32, 53], [27, 33, 56] ],
[ [57, 2, 3], [23, 246, 49], [29, 253, 58] ]
]
red_channel, green_channel, blue_channel = get_third(image)
print(red_channel)
[56, 23, 27, 57, 23, 29]
我曾经考虑过使用嵌套的for循环在前两个维度上进行迭代,然后将每个RGB数组添加到列表中,或者不添加到列表中,但这是我的理解,这既效率低下又让人有些费解。
提前致谢!
编辑
说明:通过解压缩,我的意思是在zip函数中使用star运算符(*),如下所示:
zip(*image)
同样要澄清的是,我无意保留宽度和高度,我只想基本上只展平并返回数组的3D尺寸。
red_channel, green_channel, blue_channel = np.transpose(np.reshape(image, (-1, 3)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.