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