NumPyでは配列の要素の平均値を求める方法として、meanとnanmean、averageの3つの関数が用意されています。それぞれ次のような違いがあります。
- np.mean: 算術平均を求める(欠損値nanがある場合は不可)
- np.nanmean: 算術平均を求める(欠損値nanは無視して計算)
- np.average: 算術平均に加えて加重平均を求める(欠損値nanがある場合は不可)
このように、meanとnanmeanは算術平均を算出します。一方で、averegeは算術平均だけでなく加重平均も算出することができます。
このページでは、これらの関数について、サンプルコードを見ながら簡潔に解説していきます。
1. np.mean: 平均値を求める(nanは不可)
np.meanは配列の要素の平均値を計算する関数です。多次元配列の場合は次元軸を指定することができます。
早速見ていきましょう。
1次元配列の場合
第一引数に配列を渡すと、配列内の全ての要素の平均値を計算します。
import numpy as np
rng = np.random.default_rng()
a =rng.integers(0, 10, (5, ))
a
np.mean(a)
多次元配列の場合
多次元配列を渡した場合も全要素の平均値を計算します。
import numpy as np
rng = np.random.default_rng()
a =rng.integers(0, 10, (2, 5))
a
np.mean(a)
オプション引数 axis で軸を指定することができます。2次元配列では、axis=0が2次元軸(縦軸)、axis=1が1次元軸(横軸)です。
np.mean(a, axis=1)
np.mean(a, axis=0)
さらに詳しくは『NumPyのmean関数で配列の平均値を算出する方法』で解説しています。
2. np.nanmean: 平均値を求める(nanを無視)
np.nanmeanはnp.mean と同じですが、配列の中に欠損値NaNがある場合の処理だけ異なります。meanは、配列内に欠損値NaNがある場合、平均値は計算せず、そのままnanを返します。
import numpy as np
a = np.array([1, 2, np.nan])
a
np.mean(a)
しかし、nanmeanは欠損値が含まれていても無視してその他の要素の平均値を計算します。
np.nanmean(a)
3. np.average: 加重平均を求める
np.averageは、平均値だけでなく加重平均を求めることができます。第一引数に配列を渡し、オプション引数で axis と weights を指定します。
1次元配列の場合
以下の配列を例に見てみましょう。
import numpy as np
a = np.array([40, 70, 75])
a
averageに配列を渡すと算術平均を計算します。
np.average(a)
オプション引数 weights= で各要素ごとの重みを指定することができます。
np.average(a, weights=[5, 3, 2])
2次元配列の場合
2次元配列の場合も見てみましょう。
import numpy as np
a = np.array([[40, 60, 80], [50, 70, 75]])
a
普通に渡すとnp.meanと同じく全要素の平均を返します。
np.average(a)
オプション引数 axis で軸を指定することができます。以下のコードは、それと同時に重みも指定して加重平均を計算しています。
np.average(a, axis=0, weights=[3,1])
より詳しくは『NumPyのaverage関数で配列の加重平均を取得する方法』で解説しているので、ぜひご確認ください。
4. まとめ
以上がNumPyの配列の要素の平均値を求めるためによく使う関数です。最後にもう一度、一覧でまとめておきたいと思います。
コメント