在python中,最高值为1,最低值为零,其他所有值按比例在中间

时间:2016-03-01 19:40:32

标签: python python-2.7

如果我有一个列表,我会在列表中找到最高和最低值,我可以将最高值标准化为1并相应地减少其他每个值。

我现在想要将列表中的最低值设置为零,并将每个值设置为零和应该占用的位置之间的位置。我不知道如何做到这一点,所以任何帮助将不胜感激。

viewWillAppear()

2 个答案:

答案 0 :(得分:0)

这是一项相当简单的数学运算:

from __future__ import division
lst = [10, 20, 30, 40, 70, 90, 100]
lower = min(lst)
upper = max(lst)
processed = [(x - lower)/(upper - lower) for x in lst]
# [0.0, 0.1111111111111111, 0.2222222222222222, 0.3333333333333333,
#  0.6666666666666666, 0.8888888888888888, 1.0]

答案 1 :(得分:0)

为了在(0,1)(0.5, 1.5)或一般(a, b)的任何范围内进行标准化,公式为:

X_new = ((X - X_min) / (X_max - X_min)) * (b - a) + a 

其中(a, b)是标准化范围。

Python代码:

>>> X = [10, 20, 30, 40, 70, 90, 100]
>>> X_max = max(X)
>>> X_min = min(X)
>>> low_limit = 0.5  # 0 in your case
>>> up_limit = 1.5   # 1 in your case
>>> [((x - X_min)/(X_max - X_min)) * (up_limit - low_limit) + low_limit for x in map(float, X)]
[0.5, 0.6111111111111112, 0.7222222222222222, 0.8333333333333333, 1.1666666666666665, 1.3888888888888888, 1.5]