numpy.nanstd#
- numpy.nanstd(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>, *, where=<no value>, mean=<no value>, correction=<no value>)[原始碼]#
計算沿指定軸的標準差,同時忽略 NaN 值。
傳回標準差,即分佈的離散程度量測值,針對非 NaN 陣列元素。預設情況下,標準差是針對展平陣列計算,否則會針對指定的軸計算。
對於全為 NaN 的切片或自由度為零的切片,會傳回 NaN 並引發 RuntimeWarning。
- 參數:
- aarray_like (類陣列)
計算非 NaN 值的標準差。
- axis{int, int 元組, None}, 選填
計算標準差時沿著的軸或多個軸。預設值是計算展平陣列的標準差。
- dtypedtype, 選填
用於計算標準差的類型。對於整數類型陣列,預設值為 float64;對於浮點類型陣列,則與陣列類型相同。
- outndarray, 選填
在其中放置結果的替代輸出陣列。它必須具有與預期輸出相同的形狀,但必要時會轉換類型(計算值的類型)。
- ddof{int, float}, 選填
表示自由度差值 (Delta Degrees of Freedom)。計算中使用的除數為
N - ddof
,其中N
代表非 NaN 元素的數量。預設情況下,ddof 為零。- keepdimsbool, 選填
如果設定為 True,則縮減的軸會在結果中保留為大小為一的維度。使用此選項,結果將會針對原始的 a 正確廣播。
如果此值不是預設值,則會原封不動地傳遞至子類別的相關函數。如果這些函數沒有 keepdims kwarg,則會引發 RuntimeError。
- where布林值的類陣列, 選填
要包含在標準差中的元素。詳情請參閱
reduce
。在版本 1.22.0 中新增。
- meanarray_like (類陣列), 選填
提供平均值以防止重新計算。平均值應具有如同使用
keepdims=True
計算時的形狀。平均值計算的軸應與呼叫此 std 函數時使用的軸相同。在版本 2.0.0 中新增。
- correction{int, float}, 選填
與 Array API 相容的
ddof
參數名稱。一次只能提供其中一個。在版本 2.0.0 中新增。
- 傳回值:
- standard_deviationndarray,請參閱上方的 dtype 參數。
如果 out 為 None,則傳回包含標準差的新陣列,否則傳回輸出陣列的參考。如果 ddof >= 切片中非 NaN 元素的數量,或切片僅包含 NaN,則該切片的結果為 NaN。
註解
標準差是與平均值的平方偏差平均值的平方根:
std = sqrt(mean(abs(x - x.mean())**2))
。平均平方偏差通常計算為
x.sum() / N
,其中N = len(x)
。但是,如果指定了 ddof,則會改用除數N - ddof
。在標準統計實務中,ddof=1
提供無限母體變異數的無偏估計值。ddof=0
為常態分佈變數的變異數提供最大概似估計值。在此函數中計算的標準差是估計變異數的平方根,因此即使使用ddof=1
,它本身也不是標準差的無偏估計值。請注意,對於複數,
std
在平方之前會取絕對值,因此結果始終為實數且非負數。對於浮點輸入,std 是使用與輸入相同的精確度計算的。根據輸入資料,這可能會導致結果不準確,尤其是對於 float32(請參閱以下範例)。使用
dtype
關鍵字指定更高精確度的累加器可以減輕此問題。範例
>>> import numpy as np >>> a = np.array([[1, np.nan], [3, 4]]) >>> np.nanstd(a) 1.247219128924647 >>> np.nanstd(a, axis=0) array([1., 0.]) >>> np.nanstd(a, axis=1) array([0., 0.5]) # may vary