Python 与 numpy 数组的高效逐元素乘法

Efficient element-wise multiplication in Python with numpy array

我有一个 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)
total_img = 255*(min - total_img)/(min - max)

您实际上只需插入 total_img 而不是 px,它会按元素执行操作。如果你想把结果存储到原来的 total_img 而不是替换它,你可以 slice-assign:

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

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

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

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