使用numpy数组在Python中进行高效的元素乘法运算

时间:2015-06-24 22:40:58

标签: python arrays numpy integer-overflow

我有一个类型为np.int64的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)

2 个答案:

答案 0 :(得分:3)

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

您实际上只是插入total_img而不是px,并且它按元素执行操作。如果您想将结果存储到原始total_img而不是替换它,您可以切片分配:

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

但请注意,这实际上并没有节省任何时间或内存。

答案 1 :(得分:0)

我相信你可以直接这样做:

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