python numpy的樣本標準差怎麼寫?

您別說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]的區別?

TAG:Python | 數學 | numpy |