1

我想要重新缩放一组值(正浮点值和负浮点值),以便这些值介于 -5 到 +5 或 -3 到 +2 之间。我怎样才能缩小它。有没有具体的公式。我尝试搜索,但没有找到任何可以处理负最小值的东西。

提前致谢...

4

3 回答 3

3

尝试像这样将值映射到 (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) 比例。

于 2013-04-17T10:28:57.923 回答
3

您可以使用线性插值/外推公式来获得您想要的结果。

代码:

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

请注意,此代码不会根据提供的最小和最大界限检查您的值,因此它将像上一个示例一样进行推断。根据需要修改它。

于 2013-04-17T10:59:53.323 回答
2

缩小数据的最简单方法是确定数据的最大值(正数或负数),并使用该最大值相应地缩放所有其他数据。

例如,如果您的数据中最多有 320 个

 320 / 320 * 5  => 5
 160 / 320 * 5  => 2.5
-160 / 320 * 5  => -2.5

所以作为一个一般方程

x / abs(maximum) * scale
于 2013-04-17T11:20:24.607 回答