我想要重新缩放一组值(正浮点值和负浮点值),以便这些值介于 -5 到 +5 或 -3 到 +2 之间。我怎样才能缩小它。有没有具体的公式。我尝试搜索,但没有找到任何可以处理负最小值的东西。
提前致谢...
我想要重新缩放一组值(正浮点值和负浮点值),以便这些值介于 -5 到 +5 或 -3 到 +2 之间。我怎样才能缩小它。有没有具体的公式。我尝试搜索,但没有找到任何可以处理负最小值的东西。
提前致谢...
尝试像这样将值映射到 (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) 比例。
您可以使用线性插值/外推公式来获得您想要的结果。
代码:
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
请注意,此代码不会根据提供的最小和最大界限检查您的值,因此它将像上一个示例一样进行推断。根据需要修改它。
缩小数据的最简单方法是确定数据的最大值(正数或负数),并使用该最大值相应地缩放所有其他数据。
例如,如果您的数据中最多有 320 个
320 / 320 * 5 => 5
160 / 320 * 5 => 2.5
-160 / 320 * 5 => -2.5
所以作为一个一般方程
x / abs(maximum) * scale