繁体   English   中英

Numpy:更快的数组访问

[英]Numpy: faster array access

我写了一个小的 python 程序,其中在一个函数中我迭代了一个图像的 Numpy 数组。 几乎整个运行时间都发生在我访问单个像素(它们具有 RGB 值)的一小部分中。 它看起来像这样:

arr #800x800 pixel
for x in range(height):
    for y in range(width):
        temp = [0,0,0]
        #prepare some stuff

        tmp[0]+=arr.item(x, y, 0) # This takes
        tmp[1]+=arr.item(x, y, 1) # almost all
        tmp[2]+=arr.item(x, y, 2) # the runtime

        #do some stuff with the values

有没有更快的方法来访问像素值?

使用sum方法:

tmp = arr.sum((0, 1))

您永远不必对 numpy 数组值编写显式循环。 几乎总是有一种运行速度更快的矢量化解决方案。

使用矢量化,即通过矩阵的操作,而不是通过每个元素,比如添加整个矩阵 A+B(其中 A 和 B 是相同维度上的 2 个矩阵)。 您正在做的是,将 A 的每个元素与 B 的每个元素一个一个地相加,这会使其变慢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM