在Python中,我正在编写卡方函数来分析图片。这是当前函数,该函数获取每个像素的RGB值并将其放入列表中:

`def chiSquared(c):
    counter=0
    width, height = c.size
    matrix = [[0 for x in range(3)] for y in range(height*width)]
    for x in range(width):
        for y in range(height):
            matrix[counter][0]=c.getpixel((x,y))[0]
            matrix[counter][1]=c.getpixel((x,y))[1]
            matrix[counter][2]=c.getpixel((x,y))[2]
            counter+=1`


矩阵如下所示:

[[230, 222, 218], [221, 218, 210], [218, 214, 206], [213, 206, 202], [214, 210, 206], [217, 215, 206], [218, 214, 210], [222, 218, 210], [225, 218, 214], [230, 222, 214], [221, 214, 206], [213, 211, 207], [205, 202, 198], [198, 194, 186], [177, 170, 166]...


我想知道的是:有没有一种简单的方法可以将每个三元组中的值相加并创建一个四元组,其中最后一位是三元组的总和。上方矩阵的IE-> [230,222,218]-> [230,222,218,670]

edit1:很简单,我的意思是有一种更好的方法然后将整个矩阵求和(每个3元组),然后创建一个新矩阵。

最佳答案

联合会

l=[[230, 222, 218], [221, 218, 210]]
[x+[sum(x)] for x in l]
Out[17]: [[230, 222, 218, 670], [221, 218, 210, 649]]

09-11 19:51