Python,缩放浮动范围[0,1]到[min,max]

Python,缩放浮动范围[0,1]到[min,max],python,numpy,Python,Numpy,我在寻找尽可能短的方法来均匀缩放浮点数组,如 orig_arr = [0.0, 0.2, 0.4, 0.6, 0.8] 到另一个范围,该示例中的0.0转换为最小值,0.8转换为最大值 通常我会通过计算组件来实现这一点: new_arr[i] = new_rg_min + orig_arr[i] * (new_rg_max - new_rg_min) 但是如果有一些numpy或任何函数可以做到这一点,而不需要循环 或者更短:我希望线性缩放并将一个范围移动到另一个范围。使用numpy您可以一次对

我在寻找尽可能短的方法来均匀缩放浮点数组,如

orig_arr = [0.0, 0.2, 0.4, 0.6, 0.8]
到另一个范围,该示例中的0.0转换为最小值,0.8转换为最大值

通常我会通过计算组件来实现这一点:

new_arr[i] = new_rg_min + orig_arr[i] * (new_rg_max - new_rg_min)
但是如果有一些numpy或任何函数可以做到这一点,而不需要循环


或者更短:我希望线性缩放并将一个范围移动到另一个范围。

使用
numpy
您可以一次对整个阵列进行数学运算……例如,您的代码可以更改为:

new_arr = numpy.array(orig_array) * (new_rg_max - new_rg_min) + new_rg_min
因为乘以或添加标量可以逐个元素工作(对于多维数组也是如此)

例如,我经常将计算图像的结果缩放到0..255,以将它们保存为PGM文件,并使用以下命令:

mn = numpy.min(image)
mx = numpy.max(image)
output = numpy.uint8((image - mn)*255/(mx - mn))