我有一个像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。我应该使用数组(或任何更好的方法)
1条答案
按热度按时间b5lpy0ml1#
从技术上讲,你是正确的,它可能会发生的总和将等于
1 +- very_small_number
,但像Numpy和Pandas这样的包不关心这一点,它将只是工作(Python的魔力)。正如其他人在评论中指出的那样,使用numpy进行规范化
1.在处理大型数组时,
1.它将不那么冗长
代码:
字符串