Pythonic方式将Numpy数组的第三维分配给1D数组

问题描述 投票:0回答:1

我正在尝试将已转换为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维度。

arrays python-3.x numpy rgb
1个回答
1
投票
red_channel, green_channel, blue_channel = np.transpose(np.reshape(image, (-1, 3)))
© www.soinside.com 2019 - 2024. All rights reserved.