我有一組數字列表,例如:[0] (0.01, 0.01, 0.02, 0.04, 0.03)[1] (0.00, 0.02, 0.02, 0.03, 0.02)[2] (0.01, 0.02, 0.02, 0.03, 0.02) ...[n] (0.01, 0.00, 0.01, 0.05, 0.03)我想做的是有效地計算所有數組元素在列表的每個索引處的均值和標準差。為了表示平均值,我一直在遍歷數組并求和列表中給定索引的值。最后,我將“平均值列表”中的每個值除以n(我正在處理總體,而不是總體中的樣本)。為了進行標準偏差,現在我已經計算出平均值,因此我再次遍歷。我想避免兩次遍歷數組,一次是平均值,然后一次是SD(在得到平均值之后)。是否有一種有效的方法來計算兩個值,而只需要遍歷數組一次?任何使用解釋語言(例如Perl或Python)或偽代碼的代碼都可以。
3 回答

瀟湘沐
TA貢獻1816條經驗 獲得超6個贊
基本的答案是隨行累加x(稱為“ sum_x1”)和x 2(稱為“ sum_x2”)之和。那么標準差的值是:
stdev = sqrt((sum_x2 / n) - (mean * mean))?
哪里
mean = sum_x / n
這是樣本標準差;您將使用“ n”而不是“ n-1”作為除數來獲得總體標準差。
如果要處理大樣本,則可能需要擔心取兩個大數之差的數值穩定性。
添加回答
舉報
0/150
提交
取消