2016-12-02 60 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

非常感謝你:) –

相關問題