如果我有一个列表,我会在列表中找到最高和最低值,我可以将最高值标准化为1并相应地减少其他每个值。
我现在想要将列表中的最低值设置为零,并将每个值设置为零和应该占用的位置之间的位置。我不知道如何做到这一点,所以任何帮助将不胜感激。
viewWillAppear()
答案 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]