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 数组有效地实现它?
注意,min
和 max
只是第 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)
我有一个 np.int64 类型的 numpy 数组,我正在尝试对其应用公式。
假设该数组是一个名为 total_img
的二维数组,其尺寸为 400 X 300 像素。对于每个像素,我想计算以下公式。 px = 255*(min - px)/(min - max)
。我希望这些重新缩放的像素始终存储在 total_img
中。我如何使用 numpy 数组有效地实现它?
注意,min
和 max
只是第 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)