Arrays 将Numpy数组的第三维指定给1D数组的Python方法
我正在尝试将一个已转换为3D numpy阵列的图像展平为三个单独的1D阵列,表示RGB通道 图像数组是成型的(高度、宽度、RGB),我尝试使用索引切片和解压缩来返回三维值,但都没有成功 理想情况下,三个单独的阵列代表每个RGB通道 例如:Arrays 将Numpy数组的第三维指定给1D数组的Python方法,arrays,python-3.x,numpy,rgb,Arrays,Python 3.x,Numpy,Rgb,我正在尝试将一个已转换为3D numpy阵列的图像展平为三个单独的1D阵列,表示RGB通道 图像数组是成型的(高度、宽度、RGB),我尝试使用索引切片和解压缩来返回三维值,但都没有成功 理想情况下,三个单独的阵列代表每个RGB通道 例如: 打印(图像) [ [ [56, 6, 3], [23, 32, 53], [27, 33, 56] ], [ [57, 2, 3], [23, 246, 49], [29, 253, 58] ] ] 红色通道、绿色通道、蓝色通道=获取第三个(图像) 打印(红色
打印(图像)
[
[ [56, 6, 3], [23, 32, 53], [27, 33, 56] ],
[ [57, 2, 3], [23, 246, 49], [29, 253, 58] ]
]
红色通道、绿色通道、蓝色通道=获取第三个(图像)
打印(红色通道)
[56, 23, 27, 57, 23, 29]
我曾考虑过使用嵌套for循环在前两个维度上迭代,然后将每个RGB数组添加到列表中,但据我所知,这样做既效率低下,又有点碍眼
提前谢谢
编辑
澄清:解压是指在zip函数中使用星形运算符(*),如下所示:
zip(*图像)
同样要澄清的是,我不打算保留宽度和高度,我只想基本上只展平并返回阵列的三维尺寸。检查一次:你所说的
解压缩是什么意思<代码>图像[:,:,0]
选择一个频道;结果是2d(高度、宽度)
<代码>重塑或拉威尔
可用于将2d重塑为1d。*数组
类似于列表(数组)
对数组的第一维度进行操作,就像对嵌套列表进行操作一样。
red_channel, green_channel, blue_channel = np.transpose(np.reshape(image, (-1, 3)))