python計算均值方差


用Python求均值與方差,可以自己寫,也可以借助於numpy,不過到底哪個快一點呢?

我做了個實驗,首先生成9百萬個樣本:

nlist=range(0,9000000)
nlist=[float(i)/1000000 for i in nlist]
N=len(nlist)

第二行是為了讓樣本小一點,否則從1加到9百萬會溢出的。

自己實現,遍歷數組來求均值方差:

sum1=0.0
sum2=0.0
for i in range(N):
	sum1+=nlist[i]
	sum2+=nlist[i]**2
mean=sum1/N
var=sum2/N-mean**2

用時5.3s

借助numpy的向量運算來求:

import numpy
narray=numpy.array(nlist)
sum1=narray.sum()
narray2=narray*narray
sum2=narray2.sum()
mean=sum1/N
var=sum2/N-mean**2

用時1.0s

結論:還是用numpy吧畢竟針對性優化過就是不一樣


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM