2015-06-24 45 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)