web-dev-qa-db-ja.com

Python NumPyにおけるnp.mean()とnp.average()の比較

私はそれに気づく

In [30]: np.mean([1, 2, 3])
Out[30]: 2.0

In [31]: np.average([1, 2, 3])
Out[31]: 2.0

しかし、結局のところ、それらは2つの異なる機能であるため、いくつかの違いがあるはずです。

両者の違いは何ですか?

152
Sibbs Gambling

np.averageはオプションの重みパラメータを取ります。提供されていない場合、それらは同等です。ソースコードを見てください。 平均平均

np.mean:

try:
    mean = a.mean
except AttributeError:
    return _wrapit(a, 'mean', axis, dtype, out)
return mean(axis, dtype, out)

np.average:

...
if weights is None :
    avg = a.mean(axis)
    scl = avg.dtype.type(a.size/avg.size)
else:
    #code that does weighted mean here

if returned: #returned is another optional argument
    scl = np.multiply(avg, 0) + scl
    return avg, scl
else:
    return avg
...
154
Hammer

np.meanは常に算術平均を計算し、入力と出力のためのいくつかの追加オプション(例えば、どのデータ型を使用するか、結果をどこに配置するかなど)を持っています。

weightsパラメーターが指定されている場合、np.averageは加重平均を計算できます。

21
Amber

いくつかのバージョンのnumpyでもう一つ重要な違いがあります。

averageはマスクを考慮に入れないため、データセット全体の平均を計算します。

meanはマスクを考慮に入れるので、マスクされていない値についてのみ平均を計算します。

g = [1,2,3,55,66,77]
f = np.ma.masked_greater(g,5)

np.average(f)
Out: 34.0

np.mean(f)
Out: 2.0
18
G M

あなたの呼び出しでは、2つの機能は同じです。

ただしaverageは加重平均を計算できます。

文書リンク: mean および average

2
Prashant Kumar