由于
-0.0 == 0.0
为真,因此您所得到的在数学上是正确的。如果您发现输出不美观,修复方法很简单。不要乘以-1
。取绝对值代替:
from collections import Counter
import math
def entropy(string):
counts = Counter(string)
rel_freq = ((i/len(string)) for i in counts.values())
return abs(sum(f*math.log2(f) for f in rel_freq))
然后
entropy('aaaaa')
计算为 0.0
。