需要找到相对频率

时间:2011-12-01 13:34:32

标签: python

无法找出为什么这不起作用?:

def frequencies(counts):    
    total = sum(counts)
    frequencies = []    
    for count in counts:
        frequencies.append(float(count/total))    
    return frequencies

它应该将一个整数列表作为参数并返回一个相对频率列表。

2 个答案:

答案 0 :(得分:4)

这是因为sum()返回一个整数,因此你正在进行整数除法。 使用

total = float(sum(counts))

代替或

frequencies.append(count/float(total))

答案 1 :(得分:0)

如果我正确理解了该任务,代码应该计算列表中遇到的数字的频率。 我建议这个解决方案:

def frequencies(counts):
    stat = {}
    total = float(len(counts))
    for count in counts:
        if count in stat:
            stat[count] = stat[count] + 1
        else:
            stat[count] = 1
    frequencies = []
    for s in counts:
        frequencies.append(float(stat[s]/total))
    return frequencies

frequencies([1,2,1])
[0.6666666666666666, 0.3333333333333333, 0.6666666666666666]