细分大型列表的最有效方法是什么?

时间:2014-12-14 05:09:45

标签: python numpy

我有一个列表,其中包含RGBA图像的1024*1024颜色数据,表示该列表中的4,194,304个整数。我需要将其拆分为1024个子列表,每个子列表包含1024子列表,其中包含4个通道,以便能够将其用于我需要的内容。

我尝试使用for循环将数据附加到新列表,但这是一个非常缓慢的过程。我只需要每4个整数划分一次列表。这样做最有效的方法是什么?如果可以以某种方式使用它,我有numpy。

我想我应该提一下,该列表来自于从struct图像中解压缩.raw,因此如果有一种方法可以在创建时拆分列表,同时解压缩也可以。< / p>

1 个答案:

答案 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)像素的四个通道,依此类推。