我正在尝试将已转换为3D numpy数组的图像展平为三个独立的1D阵列,代表RGB通道。
图像数组的形状(HEIGHT,WIDTH,RGB),我试图使用索引切片和解压缩来返回第三维值。
理想情况下,三个独立的阵列代表每个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维度。
red_channel, green_channel, blue_channel = np.transpose(np.reshape(image, (-1, 3)))