【问题标题】:Python - Fastesty way to find the sum of a list of coordinatesPython - 查找坐标列表总和的最快方法
【发布时间】:2020-12-07 01:04:57
【问题描述】:

我正在优化一个程序,该程序涉及对黑白图像上一行中的所有像素值进行平均。

线路: 我正在使用 scimage 生成坐标列表,以两个 ndarray 的形式给出(一个用于 X,一个用于 Y)。

图像: 我正在使用 PIL 获取 PixelAccess 对象,它的作用类似于 2D 像素数组。

平均坐标列表中每个像素的最快方法是什么?目前,它是迄今为止最大的瓶颈。我目前的解决方案是这样的:

def sumPoints(xx,yy, refPixels):
    pointSum = 0
    for i in range(len(xx)):
        pointSum += refPixels[int(xx[i]),int(yy[i])]
    return pointSum / len(xx)

谢谢!

【问题讨论】:

    标签: python arrays optimization scikit-image


    【解决方案1】:

    你可以开始

    pointSum = sum(RefPixels[int(x), int(y)]) for x, y in zip(xx, yy))
    

    我对 PixelAccess 不是很熟悉。它与 Numpy 数组有多相似?因为 Numpy 会让你使用 xx 和 yy 直接创建一个子数组。

    【讨论】:

    • 出于这个确切原因,我正在努力将所有内容都转换为 numpy 数组!谢谢,我会添加这个。
    • 不幸的是,您的第一个建议大大减慢了一切!不知道为什么。
    • 嗯。这很令人惊讶。我期待一个小的改进。我想如果xy 是PixelAccess 数组而不是标准数组,Python 可能不知道如何优化它。 xy 相对于像素数有多大?他们是随机挑选的吗?它们是否满足某些标准?
    猜你喜欢
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 2011-01-05
    相关资源
    最近更新 更多