[英]Markedly faster to access a numpy array 'arr' than 'arr[:]'
[英]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.