私はそれに気づく
In [30]: np.mean([1, 2, 3])
Out[30]: 2.0
In [31]: np.average([1, 2, 3])
Out[31]: 2.0
しかし、結局のところ、それらは2つの異なる機能であるため、いくつかの違いがあるはずです。
両者の違いは何ですか?
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
...
np.mean
は常に算術平均を計算し、入力と出力のためのいくつかの追加オプション(例えば、どのデータ型を使用するか、結果をどこに配置するかなど)を持っています。
weights
パラメーターが指定されている場合、np.average
は加重平均を計算できます。
いくつかのバージョンの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