我想创建一个小的python脚本,将一些数据作为图像文件从混合器内部导出python api。
我找到了一个很好的教程,但有一条线让我感到害怕:
# flatten list
pixels = [chan for px in pixels for chan in px]
pixels
是一个大小为4*width*height
的浮点数组(rgba-channels)
此行是在使用值填充数组之后和导出图像之前。它有什么作用?为什么我需要"展平"我的像素列表?这甚至意味着什么?
我不知道是否重要(因为我对python来说相对较新),但数组在此行中填充了一个double for循环(对于x和y):pixels[(y * size[0]) + x] = [r, g, b, a]
答案 0 :(得分:1)
由于我们不知道程序的其余部分是什么,所以我们无法确定为什么需要展平列表。这通常只是带宽问题:您的协议一次只能获取一个强度值,因此它们必须采用线性流。
你拥有的是列表清单,如下所示:
[r1, g1, b1, a1, r2, g2, b2, a2, ...]
拼合意味着将其转换为具有相同顺序的元素的列表,但只有一层深度:
temp = []
for chan in px:
for px in pixels:
temp += px
pixels = temp
令你害怕的列表理解是为列表列表执行此操作的简写。从外面读取。我怀疑列表理解中的第一项应该是 px ,而不是陈。
/**
* @Route("/{entityId}", requirements={"entityId" = "\d+"})
* @ParamConverter("entity", converter="fos_rest.request_body")
* @Method("PUT")
* @Rest\View(statusCode=201)
*/
public function putAction($entityId, Entity $entity, ConstraintViolationListInterface $validationErrors)
这有帮助吗?