python numpy的樣本標準差怎麼寫?
01-24
您別說std,那個不是
有時候人容易犯知其一不知其二的錯誤,np.std也是支持計算無偏樣本標準差的(話說無偏樣本標準差這麼常用,NumPy怎麼會不支持呢),見如下代碼:
&>&>&> a = np.arange(10)
&>&>&> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
&>&>&> np.std(a, ddof = 1)
3.0276503540974917
&>&>&> np.sqrt(((a - np.mean(a)) ** 2).sum() / (a.size - 1))
3.0276503540974917
&>&>&> np.sqrt(( a.var() * a.size) / (a.size - 1))
3.0276503540974917
ddof : int, optional
Means Delta Degrees of Freedom. The divisor used in calculations is N - ddof, where N represents the number of elements. By default ddof is zero.
似乎在std函數里設置參數ddof = 1就可以了?
謝謝邀請!
從numpy的官方解釋庫中可以看到std的標準解釋,我們發現var是:題主要求解的是除以N-1的標準差,並不是除以N的官方庫里的std,所以用個笨辦法可以將var先求求出來,在乘以樣本的長度,除以N-1,接著開根號。
即:
a = np.array() #樣本 std1 = sqrt((a.var*len(a))/(len(a)-1)) #只適用於一維數組的樣本############分割線我只是一個剛剛開始學習python的孩子,並沒有一點編程基礎,收到邀請很是驚訝,只有這麼一點水平,望見諒,建議還是多邀請幾個大神來吧推薦閱讀:
※python下numpy不成功,請問有沒有簡單的安裝方法?
※Numpy中arr[:]和arr[...],arr[:,i,j] 與arr[:][i][j]的區別?