从整数列表更改为0到1之间的权重?

coo*_*per 0 python distribution list

在python中,我有一个列表,例如:

a = [1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

列表将始终排序.我想为这些值分配权重,使得权重仅在值0和1之间.最大值将具有权重1,即在该示例中,5将具有权重1.

但是,1不会有权重0(0是特殊的,不包括在内).我希望所有其他权重都是最大数字的某个小数值.我不确定解决这个问题的最佳方法是什么.

Mar*_*ers 9

先找到最大值; 由于您的数据已排序,这将是最后一个值; 然后简单地将其余部分除以该值:

from __future__ import division

maxval = a[-1]
weights = [elem / maxval for elem in a]
Run Code Online (Sandbox Code Playgroud)

演示:

>>> maxval = a[-1]
>>> [elem / maxval for elem in a]
[0.2, 0.4, 0.6, 0.8, 1.0]
Run Code Online (Sandbox Code Playgroud)

from __future__ import division进口,确保我们使用浮点除法,而不是整数除法.另一种方法是使用maxval = float(a[-1]).