numpy.ma.average#
- ma.average(a, axis=None, weights=None, returned=False, *, keepdims=<no value>)[原始碼]#
傳回沿著給定軸的陣列加權平均值。
- 參數:
- aarray_like (類陣列)
要計算平均值的資料。遮罩項目在計算中不予考慮。
- axisNone 或 int 或 ints 元組,選用
要沿著其計算 a 平均值的軸或多個軸。預設值 axis=None 將計算輸入陣列中所有元素的平均值。如果 axis 是 ints 元組,則會在元組中指定的所有軸上執行平均值計算,而不是單一軸或像之前一樣的所有軸。
- weightsarray_like (類陣列),選用
與 a 中的值相關聯的權重陣列。a 中的每個值都會根據其相關聯的權重對平均值做出貢獻。如果未指定軸,則權重陣列的形狀必須與 a 相同,否則權重必須具有與沿指定軸的 a 一致的維度和形狀。如果 weights=None,則假定 a 中的所有資料都具有等於 1 的權重。計算公式為
avg = sum(a * weights) / sum(weights)
其中總和是對所有包含的元素求和。對 weights 值唯一的限制是 sum(weights) 不得為 0。
- returnedbool,選用
旗標,指示是否應將元組
(result, 權重總和)
作為輸出 (True) 傳回,或僅傳回結果 (False)。預設值為 False。- keepdimsbool,選用
如果設定為 True,則縮減的軸將保留在結果中,作為大小為 1 的維度。使用此選項,結果將針對原始 a 正確廣播。注意: keepdims 不適用於
numpy.matrix
或其他方法不支援 keepdims 的類別的實例。版本 1.23.0 新增。
- 傳回值:
- 引發:
- ZeroDivisionError (除以零錯誤)
當沿軸的所有權重均為零時。請參閱
numpy.ma.average
,以取得適用於此類型錯誤的穩健版本。- TypeError (型別錯誤)
當 weights 的形狀與 a 不同,且 axis=None 時。
- ValueError (值錯誤)
當 weights 沒有與沿指定 axis 的 a 一致的維度和形狀時。
範例
>>> import numpy as np >>> a = np.ma.array([1., 2., 3., 4.], mask=[False, False, True, True]) >>> np.ma.average(a, weights=[3, 1, 0, 0]) 1.25
>>> x = np.ma.arange(6.).reshape(3, 2) >>> x masked_array( data=[[0., 1.], [2., 3.], [4., 5.]], mask=False, fill_value=1e+20) >>> data = np.arange(8).reshape((2, 2, 2)) >>> data array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]]) >>> np.ma.average(data, axis=(0, 1), weights=[[1./4, 3./4], [1., 1./2]]) masked_array(data=[3.4, 4.4], mask=[False, False], fill_value=1e+20) >>> np.ma.average(data, axis=0, weights=[[1./4, 3./4], [1., 1./2]]) Traceback (most recent call last): ... ValueError: Shape of weights must be consistent with shape of a along specified axis.
>>> avg, sumweights = np.ma.average(x, axis=0, weights=[1, 2, 3], ... returned=True) >>> avg masked_array(data=[2.6666666666666665, 3.6666666666666665], mask=[False, False], fill_value=1e+20)
使用
keepdims=True
,以下結果的形狀為 (3, 1)。>>> np.ma.average(x, axis=1, keepdims=True) masked_array( data=[[0.5], [2.5], [4.5]], mask=False, fill_value=1e+20)