2015-06-24 82 views
1

我有一個np.int64類型的numpy數組,我嘗試應用公式。在Python中使用numpy數組進行高效的元素乘法

假設該陣列是一個稱爲total_img的二維數組,其尺寸爲400 X 300像素。對於每個像素,我想計算下面的公式。 px = 255*(min - px)/(min - max)。我希望這些重新調整的像素始終存儲在total_img中。我如何有效地使用numpy數組來實現這個功能?

請注意,minmax只是第1百分位和第99百分位數值,實際上存儲爲浮點數。我應該將它們轉換爲整數以獲得更好的準確性(請記住total_img的類型爲np.int64 - 不會發生溢出)。 min也很可能是負面的。

我所用:

for row in total_img: 
    for px in row:   
     px = 255*(min-px)/(min - max) 
+1

你不應該影子內建如最小值/最大值...只是順便說一句風馬牛不相及您的問題 –

回答

3
total_img = 255*(min - total_img)/(min - max) 

你從字面上只需要插上total_img,而不是px,並且它的操作按元素。如果你希望將結果保存到原來的total_img不是替換它,你可以切片指派:

total_img[:] = 255*(min - total_img)/(min - max) 

但請注意,這實際上不保存任何時間或內存。

0

我相信你可以直接做到這一點:

total_img = 255*(min-total_img)/(min - max)