我有一个列表,其中包含RGBA
图像的1024*1024
颜色数据,表示该列表中的4,194,304
个整数。我需要将其拆分为1024
个子列表,每个子列表包含1024
子列表,其中包含4个通道,以便能够将其用于我需要的内容。
我尝试使用for循环将数据附加到新列表,但这是一个非常缓慢的过程。我只需要每4个整数划分一次列表。这样做最有效的方法是什么?如果可以以某种方式使用它,我有numpy。
我想我应该提一下,该列表来自于从struct
图像中解压缩.raw
,因此如果有一种方法可以在创建时拆分列表,同时解压缩也可以。< / p>
答案 0 :(得分:8)
听起来您可以使用numpy.reshape
来获取您之后的内容。假设您有12个元素的列表:
>>> import numpy as np
>>> x = np.arange(12)
>>> x
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
我们将其重塑为每行四个元素:
>>> x.reshape(-1,4)
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
你也可以给reshape
两个以上的维度,所以说x
是100 {1} d阵列中的5x5
RGBA图像,你可以做{{1} },以便y = x.reshape(5,5,4)
给出(0,0)像素的四个通道,y[0][0]
包含(0,1)像素的四个通道,依此类推。