Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,将最高值标记为1,最低值标记为0,其他所有值按比例介于两者之间_Python_Python 2.7 - Fatal编程技术网

在python中,将最高值标记为1,最低值标记为0,其他所有值按比例介于两者之间

在python中,将最高值标记为1,最低值标记为0,其他所有值按比例介于两者之间,python,python-2.7,Python,Python 2.7,如果我有一个列表,我会在列表中找到最高值和最低值,我可以将最高值规范化为1,并相应地减少其他值 现在我想将列表中的最小值设置为零,并将每个值设置为它应该占据的0到1之间的位置。我不知道如何做到这一点,所以任何帮助将不胜感激 lst = [10, 20, 30, 40, 70, 90, 100] adjusted_lst = [0.1, 0.2, 0.3, 0.4, 0.7, 0.9, 1.0] #I can get to here but further I cannot. final_lst

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

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

lst = [10, 20, 30, 40, 70, 90, 100]
adjusted_lst = [0.1, 0.2, 0.3, 0.4, 0.7, 0.9, 1.0] #I can get to here but further I cannot. 
final_lst = [0.0, ?, ?, ?, ?, ?, 1.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]

为了在任何范围内进行规范化,无论是
(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]

从所有元素中减去最低值,然后进行规范化?这个过程被称为我会避免导入
除法
,因为它可能会对文件中的其他代码产生不可预见的后果。此代码的哪一部分需要将来的导入除法?抱歉,没有问题。@JamesLloyd int除以int将在Python 2中生成int(向下舍入)<代码>从未来导入除法将默认行为更改为Python 3行为-除法始终返回浮点值。要在不导入的情况下实现相同的效果,您需要将除法参数中的一个显式转换为浮点-例如,
float(x-lower)/(upper-lower)