我试图在代码中进行一些归一化,我有一个内列表:
a = [[ ('1', 0.03),
('2', 0.03),
('3', 0.06)]
[ ('4', 0.03),
('5', 0.06),
('6', 0.06)]
[ ('7', 0.07),
('8', 0.014),
('9', 0.07)]
]
我尝试将元组中的分布归一化以获取列表b
b = [[ ('1', 0.25),
('2', 0.25),
('3', 0.50)]
[ ('4', 0.20),
('5', 0.40),
('6', 0.40)]
[ ('7', 0.25),
('8', 0.50),
('9', 0.25)]
]
我尝试了:
for i in a:
for n, (ee,ww) in enumerate(i):
i[n] = (ee,ww/sum(ww))
但失败了。
如何在Python中获得b
?
a = [[ ('1', 0.03),
('2', 0.03),
('3', 0.06)],
[ ('4', 0.03),
('5', 0.06),
('6', 0.06)],
[ ('7', 0.07),
('8', 0.14),
('9', 0.07)]
]
for i in a:
s = sum(v[1] for v in i)
i[:] = [(v[0], v[1] / s) for v in i]
from pprint import pprint
pprint(a)
打印:
[[('1', 0.25), ('2', 0.25), ('3', 0.5)],
[('4', 0.2), ('5', 0.4), ('6', 0.4)],
[('7', 0.25), ('8', 0.5), ('9', 0.25)]]
注意:
i[:] = [(v[0], v[1] / s) for v in i]
用列表理解的新值替换列表i
中的所有值。