python 将浮动列表规范化为概率

a11xaf1n  于 11个月前  发布在  Python
关注(0)|答案(1)|浏览(112)

我有一个像weights = [3, 7, 4, 2]这样的概率权重列表,我想对它进行归一化,使sum(weights) == 1
这可以在以后用于类似“A weighted version of random.choice“和numpy.random.choice的东西
目前我正在做一些类似的事情:

norm_one = sum(weights)
probabilities = [x / norm_one for x in weights]

字符串
我想知道我正在做的事情是否有任何问题,因为浮点数是用有限数量的位表示的,列表的总和可能不等于1,如果有一个内置函数来规范化列表或numpy。我应该使用数组(或任何更好的方法)

b5lpy0ml

b5lpy0ml1#

从技术上讲,你是正确的,它可能会发生的总和将等于1 +- very_small_number,但像Numpy和Pandas这样的包不关心这一点,它将只是工作(Python的魔力)。
正如其他人在评论中指出的那样,使用numpy进行规范化
1.在处理大型数组时,
1.它将不那么冗长
代码:

import numpy as np

weights = np.array([5, 18, 7])
probabilities = weights / weights.sum()

字符串

相关问题