簡體   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