将 Numpy 数组的第三维分配给一维数组的 Pythonic 方法

Pythonic way to assign 3rd Dimension of Numpy array to 1D Array

我正在尝试将已转换为 3D numpy 数组的图像展平为三个独立的一维数组,代表 RGB 通道。

图像数组的形状为(HEIGHT、WIDTH、RGB),我尝试使用索引切片和解压缩到 return 第 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 维度。

red_channel, green_channel, blue_channel = np.transpose(np.reshape(image, (-1, 3)))