Python 图像展平像素列表

Python 图像展平像素列表,python,image,blender,Python,Image,Blender,我想创建一个小的python脚本,从blenders python api内部将一些数据导出为图像文件 我找到了一个很好的教程,但有一句话让我抓狂: # flatten list pixels = [chan for px in pixels for chan in px] 像素是大小为4*宽*高的浮点数组(rgba通道) 这一行是在用值填充数组之后导出图像之前。它有什么作用?为什么我需要“展平”我的像素列表?这到底是什么意思 我不知道这是否重要(因为我对python比较陌生),但数组是在一

我想创建一个小的python脚本,从blenders python api内部将一些数据导出为图像文件

我找到了一个很好的教程,但有一句话让我抓狂:

# flatten list
pixels = [chan for px in pixels for chan in px]
像素
是大小为
4*宽*高
的浮点数组(rgba通道)

这一行是在用值填充数组之后导出图像之前。它有什么作用?为什么我需要“展平”我的像素列表?这到底是什么意思



我不知道这是否重要(因为我对python比较陌生),但数组是在一个双for循环(对于x和y)中填充的:
pixels[(y*size[0])+x]=[r,g,b,a]

,因为我们不知道程序的其余部分做什么,所以我们无法确定为什么需要展平列表。这通常只是一个带宽问题:您的协议一次只能获取一个强度值,因此它们必须以线性流的形式出现

您拥有的是一个列表列表,如下所示:

[ [r1, g1, b1, a1],
  [r2, g2, b2, a2],
  ...
]
展平意味着将其转换为元素顺序相同但只有一层深的列表:

[r1, g1, b1, a1, r2, g2, b2, a2, ...]
让你抓狂的列表理解是一个列表的速记。从外到内阅读。我怀疑列表中的第一项理解应该是px,而不是chan

temp = []
for chan in px:
    for px in pixels:
        temp += px
pixels = temp

这有用吗

扁平化列表只是将列表从多维数组转换为扁平列表(例如字节流)。至于为什么需要这样做,我们可能需要更多的背景。啊,谢谢!我不知道我在处理一个列表。。。这是有道理的。我现在只是改变了列表的填充方式,因此不再需要平铺。