NumPyで平均値を求める3つの関数の使い方まとめ

NumPyでは配列の要素の平均値を求める方法として、meannanmeanaverageの3つの関数が用意されています。それぞれ次のような違いがあります。

  • np.mean: 算術平均を求める(欠損値nanがある場合は不可)
  • np.nanmean: 算術平均を求める(欠損値nanは無視して計算)
  • np.average: 算術平均に加えて加重平均を求める(欠損値nanがある場合は不可)

このように、meannanmeanは算術平均を算出します。一方で、averegeは算術平均だけでなく加重平均も算出することができます。

このページでは、これらの関数について、サンプルコードを見ながら簡潔に解説していきます。

目次

1. np.mean: 平均値を求める(nanは不可)

np.meanは配列の要素の平均値を計算する関数です。多次元配列の場合は次元軸を指定することができます。

早速見ていきましょう。

1次元配列の場合

第一引数に配列を渡すと、配列内の全ての要素の平均値を計算します。

In [1]:
import numpy as np
rng = np.random.default_rng()
a =rng.integers(0, 10, (5, ))
a
Out[1]:
array([6, 7, 6, 8, 9])
In [2]:
np.mean(a)
Out[2]:
7.2

多次元配列の場合

多次元配列を渡した場合も全要素の平均値を計算します。

In [3]:
import numpy as np
rng = np.random.default_rng()
a =rng.integers(0, 10, (2, 5))
a
Out[3]:
array([[3, 7, 1, 7, 4],
       [7, 8, 1, 6, 5]])
In [4]:
np.mean(a)
Out[4]:
4.9

オプション引数 axis で軸を指定することができます。2次元配列では、axis=0が2次元軸(縦軸)、axis=1が1次元軸(横軸)です。

In [5]:
np.mean(a, axis=1)
Out[5]:
array([4.4, 5.4])
In [6]:
np.mean(a, axis=0)
Out[6]:
array([5. , 7.5, 1. , 6.5, 4.5])

さらに詳しくは『NumPyのmean関数で配列の平均値を算出する方法』で解説しています。

2. np.nanmean: 平均値を求める(nanを無視)

np.nanmeannp.mean と同じですが、配列の中に欠損値NaNがある場合の処理だけ異なります。meanは、配列内に欠損値NaNがある場合、平均値は計算せず、そのままnanを返します。

In [1]:
import numpy as np
a = np.array([1, 2, np.nan])
a
Out[1]:
array([ 1.,  2., nan])
In [2]:
np.mean(a)
Out[2]:
nan

しかし、nanmeanは欠損値が含まれていても無視してその他の要素の平均値を計算します。

In [3]:
np.nanmean(a)
Out[3]:
1.5

3. np.average: 加重平均を求める

np.averageは、平均値だけでなく加重平均を求めることができます。第一引数に配列を渡し、オプション引数で axis と weights を指定します。

1次元配列の場合

以下の配列を例に見てみましょう。

In [1]:
import numpy as np
a = np.array([40, 70, 75])
a
Out[1]:
array([40, 70, 75])

averageに配列を渡すと算術平均を計算します。

In [2]:
np.average(a)
Out[2]:
61.666666666666664

オプション引数 weights= で各要素ごとの重みを指定することができます。

In [3]:
np.average(a, weights=[5, 3, 2])
Out[3]:
56.0

2次元配列の場合

2次元配列の場合も見てみましょう。

In [4]:
import numpy as np
a = np.array([[40, 60, 80], [50, 70, 75]])
a
Out[4]:
array([[40, 60, 80],
       [50, 70, 75]])

普通に渡すとnp.meanと同じく全要素の平均を返します。

In [5]:
np.average(a)
Out[5]:
62.5

オプション引数 axis で軸を指定することができます。以下のコードは、それと同時に重みも指定して加重平均を計算しています。

In [6]:
np.average(a, axis=0, weights=[3,1])
Out[6]:
array([42.5 , 62.5 , 78.75])

より詳しくは『NumPyのaverage関数で配列の加重平均を取得する方法』で解説しているので、ぜひご確認ください。

4. まとめ

以上がNumPyの配列の要素の平均値を求めるためによく使う関数です。最後にもう一度、一覧でまとめておきたいと思います。

関数名 解説 NaNが含まれる場合
mean 算術平均を求める nanを返す
nanmean 算術平均を求める nanは無視
average 加重平均を求める nanを返す

Python初心者におすすめのプログラミングスクール

「未経験からでもPythonを学べるプログラミングスクールを探しているけど、色々ありすぎてわからない」なら、次の3つのプログラミングスクールから選んでおけば間違いはありません。

Aidemy Premium:全くの初心者ができるだけ効率よく短期間で実務的に活躍できるAI人材になることを目的とした講座。キャリアカウンセリングや転職エージェントの紹介などの転職支援も充実しており、受講者の転職成功率が高い。

AIジョブカレPythonの基本をおさえた人が、実際に機械学習やディープラーニングを活用できるようになるための講座。転職補償型があるなどキャリア支援の内容が非常に手厚く、講師の質も最高クラス。コスパ最高。Python初心者用の対策講座もある。

データミックスプログラミング経験者のビジネスマンが、更なるキャリアアップのためにデータの処理方法を学んでデータサイエンティストになるための講座。転職だけでなく起業やフリーランスとして独立する人も多い。Python初心者用の対策講座もある。

特に、あなたが以下のような目標を持っているなら、この中から選んでおけば間違いはないでしょう。

・未経験からPythonエンジニアとして就職・転職したい
・AIエンジニアやデータサイエンティストとしてキャリアアップしたい
・起業やフリーランスを視野に入れたい

理由は「Python初心者のためのおすすめプログラミングスクール3選」で解説しています。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる