python – 如何将正十进制数和负十进制数列表标准化为特定范围

我有一个十进制数列表如下:

[-23.5, -12.7, -20.6, -11.3, -9.2, -4.5, 2, 8, 11, 15, 17, 21]

我需要将此列表标准化以适应范围[-5,5].
我怎么能在python中做到这一点?

最佳答案
获得输入范围非常简单:

old_min = min(input)
old_range = max(input) - old_min

这是棘手的部分.您可以乘以新范围并除以旧范围,但这几乎可以保证顶部存储桶只能获得一个值.您需要扩展输出范围,以使顶部存储桶与所有其他存储桶的大小相同.

new_min = -5
new_range = 5 + 0.9999999999 - new_min
output = [int((n - old_min) / old_range * new_range + new_min) for n in input]

转载注明原文:python – 如何将正十进制数和负十进制数列表标准化为特定范围 - 代码日志