python - 如何将正负十进制数列表规范化到特定范围

标签 python list range normalize

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

[-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 = [floor((n - old_min) / old_range * new_range + new_min) for n in input]

关于python - 如何将正负十进制数列表规范化到特定范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16514443/

相关文章:

css - 范围输入拇指随时间偏移

python - sys.stdout.flush() 方法的使用

python - 在 Python 中裁剪和保存 TIFF 文件

python - 使用自定义 python JSON 编码器在字典中编码 float

python - MANOVA 使用统计模型

javascript - 如何在两个 div 之间的 contenteditable div 中设置插入符号/光标位置

python - 连接子列表python

c# - 在 View MVC 中显示列表

javascript - 使用按钮从数组打印

data-structures - 用于存储范围的数据结构