我正在尝试将已转换为3D numpy数组的图像展平为三个单独的1D数组,分别代表RGB通道。
图像数组的形状是(高度,宽度,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函数中使用星号运算符(*),如下所示:
zip(*image)
同样要澄清的是,我不打算保留宽度和高度,我只想基本上只展平并返回数组的3D维度。
答案 0 :(得分:1)
red_channel, green_channel, blue_channel = np.transpose(np.reshape(image, (-1, 3)))