我希望重新缩放值数组(正浮点值和负浮点值),以便值介于-5到+5或-3到+2之间。我该如何缩小它。是否有任何具体的公式。我试过搜索,但没有找到任何可以处理负最小值的东西。
提前致谢...
答案 0 :(得分:2)
缩放数据的最简单方法是确定数据的最大值(正数或负数),并使用它来相应地扩展所有其他数据。
例如,如果您的数据中最多有320个
320 / 320 * 5 => 5
160 / 320 * 5 => 2.5
-160 / 320 * 5 => -2.5
所以作为一般方程式
x / abs(maximum) * scale
答案 1 :(得分:1)
尝试这样的方法将值映射到(0,1)比例:
y = (x - xmin) / (xmax - xmin)
您还可以使用有限元形状函数:
y = h1*x1 + h2*x2
,其中
h1 = (z - 1)/2.0 for -1 <= z <= +1
h2 = (z + 1)/2.0 for -1 <= z <= +1
这会将您的值映射到(-1,1)比例。
答案 2 :(得分:0)
您可以使用线性插值/外推公式来获得所需的结果。
代码:
def rescale(val, in_min, in_max, out_min, out_max):
return out_min + (val - in_min) * ((out_max - out_min) / (in_max - in_min))
print(rescale(4, 4, 20, 0, 100)) # => 0.0
print(rescale(12, 4, 20, 0, 100)) # => 50.0
print(rescale(20, 4, 20, 0, 100)) # => 100.0
print(rescale(0, 4, 20, 0, 100)) # => -25.0
请注意,此代码不会根据提供的最小和最大边界检查您的值,因此它将按照上一个示例进行推断。根据需要进行修改。