我有一組數據點,我已經制作了一個程序來查看數據集,從該集中取n個點,然後求和並將其放入一個新列表中。並且,我可以製作一個簡單的條形圖。在python中計算離散均值
現在我想爲我的新列表計算離散均值。
我使用的公式是這樣的:t_av=(1/nsmp) Sum[N_i*t_i,{i,n_l,n_u}]
基本上我有一個在他們N_i
數nsmp箱,t_i
是一個箱的時間,n_l
是第一個紙槽,n_u
是最後一個垃圾桶。
所以,如果我的名單是這樣的:[373, 156, 73, 27, 16]
,
我有5個箱,我有:t_av=1/5 (373*1+156*2+73*3+27*4+16*5)=218.4
現在我遇到了一個問題。我試着用這樣的:
for i in range(0,len(L)):
sr_vr = L[i]*i
tsr=sr_vr/nsmp
哪裏nsmp是垃圾箱我可以設置的數量,我有L
計算。由於範圍將從0,1,2,3,4開始,所以我不會得到正確的答案,因爲我的第一個bin是按0計算的。如果我說range(1,len(L)+1)
我會得到IndexError: list index out of range
,因爲這會混淆L[i]*i
部分因爲他仍然會將列表中的第二(1)元素與1相乘,然後他將成爲最後一部分的一個簡短條目。
我該如何糾正?
你的第二個版本的作品,而L [i] *(i + 1)給出了錯誤的答案。我不會想到第二種方式,這是完美的。我會在8分鐘內接受它:D順便說一句,我仍然dk爲什麼這個簡單的循環無法正常工作:\ 編輯:我有'__future__'部分:) –
您正在'sr_vr'上重新分配一個新值每次迭代,當你想保持一個運行的總和而不是。所以你可以在循環之前加上'sr_vr = 0',然後在循環中使用'sr_vr + = L [i] *(i + 1)'。 –
哦,對了!感謝您的幫助,非常有義務:) –