Python,scale float range [0,1)到[min,max]

时间:2015-11-08 22:54:42

标签: python numpy

我正在寻找最简单的方法来统一缩放像

这样的浮点数组
orig_arr = [0.0, 0.2, 0.4, 0.6, 0.8]

到另一个范围,其中0.0从这个例子转换为min,0.8转换为max。

通常我会通过计算分数来做到这一点:

new_arr[i] = new_rg_min + orig_arr[i] * (new_rg_max - new_rg_min)

但是,如果有一些numpy或任何功能可以做到这一点而不需要循环......

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

1 个答案:

答案 0 :(得分:3)

使用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))