如何将三维阵列展平为一维阵列

2024-06-10 19:11:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个三维嵌套阵列。如何将其展平为1d阵列?(因为性能)我假设,我需要乘以一些东西等等,但我不是最伟大的数学家。 谢谢

def imgRGB(im):
    width, height = im.size

    #create matrix
    matrix = []
    for i in range(height):
        matrix.append([[0,0,0] for _ in range(width)])

    #get the rgb values
    for x in range(width):
        for y in range(height):
            r,g,b = im.getpixel((x,y))
            matrix[y][x][0] = r
            matrix[y][x][1] = g
            matrix[y][x][2] = b
    return matrix

像素值将与其他RGB值进行比较,以找到最接近的匹配

def getNearestColor(rgb):
    a = []
    for i in range(len(rgbValues)):
        d = ((rgbValues[i][0]-rgb[0])*0.3)**2 + ((rgbValues[i][1]-rgb[1])*0.59)**2 + ((rgbValues[i][2]-rgb[2])*0.11)**2
        a.append(d)
    list.sort(a)
    return a[0]


Tags: inforreturndefrangergb性能width
2条回答

如果我理解正确,您需要执行以下操作:

rgbValues = np.array(im).reshape(-1,3)
a = np.sort(np.sum(((rgbValues - rgb)* [0.3, 0.59, 0.11])**2, axis=1))

其中rgb是一些值r、g、b的列表[r, g, b]

您可以使用ndarray.flatte,在您的示例中是matrix.flatten()。这将返回矩阵的展平版本。文档here也有一个例子

相关问题 更多 >