我正在寻找最简单的方法来统一缩放像
这样的浮点数组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或任何功能可以做到这一点而不需要循环......
或更短:我想线性缩放并将一个范围移动到另一个范围。
答案 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))