2016-12-02 73 views
1

我必须计算python的均值,方差和std。如何在不导入的情况下计算方差和std

这里是我的代码:

def mean(first_data_values): 

    return sum(first_data_values)/len(first_data_values) 

def variance(values): 

    meanval = mean(values) 
    return sum((values[i]-meanval) ** 2 for i in values)/len(values) 

def std(values): 

    return (variance(values)) ** (1/2) 

,所以我得到错误的结果。任何想法是什么错误?

+1

有没有什么不能使用'statistics'模块什么特别的原因? – farsil

+2

可能应该是'sum((i - meanval)** 2为我的值)/ len(值)' –

+1

它不允许这个作业 –

回答

1

误差在于以下行:

return sum((values[i]-meanval) ** 2 for i in values)/len(values) 

i由一个取入values每一个元素的值。您然后将其用作values[i]中的索引,但应该只是i

因此:

return sum((i-meanval) ** 2 for i in values)/len(values) 

return mean([(i-meanval) ** 2 for i in values]) 
+0

或者只是'return mean([(i-meanval)** 2 for i in values])' –

+0

是的,更好! – Zafi

+0

非常感谢你:) –

相关问题