スポンサーリンク

NumPyで代表値(平均値、中央値、最頻値)を算出する

Numpy

Numpyで代表値(平均値、中央値や最頻値)を算出する方法について記載する。平均値はnumpy.mean、中央値はnumpy.median、最頻値はSciPyのscipy.stats.modeを用いる。

平均値:numpy.meanの使い方

5行4列のndarray配列を対象とする。numpy.meanの引数にndarray配列をを指定すると、全要素からの平均値が算出される。

import numpy as np

a = np.array([[6, 8, 3, 0],
              [3, 2, 1, 7],
              [8, 1, 8, 4],
              [5, 3, 0, 5],
              [4, 7, 5, 9]])
print(a.shape)
# (5, 4)

print(np.mean(a))
# 4.45

引数axisを指定すると軸に沿った平均値が算出される。

print(np.mean(a, axis=0))
# [5.2 4.2 3.4 5. ]

print(np.mean(a, axis=1))
# [4.25 3.25 5.25 3.25 6.25]

中央値:numpy.medianの使い方

平均値と同様でnumpy.medianにndarray配列を指定すると、全要素からの中央値が算出される。引数axisを指定すると、軸に沿った中央値が算出される。

print(np.median(a))
# 4.5

print(np.median(a, axis=0))
# [5. 3. 3. 5.]

print(np.median(a, axis=1))
# [4.5 2.5 6.  4.  6. ]

最頻値:scipy.stats.modeの使い方

Numpyには直接最頻値を求める方法はないので、SciPyのscipy.stats.modeを用いる。scipy.stats.modeの引数にndarray配列を指定する。引数axisにNoneを指定すれば全要素から、axisに軸を指定すれば軸に沿った最頻値が算出される。

from scipy import stats

print(stats.mode(a, axis=None))
# ModeResult(mode=array([3]), count=array([3]))

print(stats.mode(a, axis=None).mode)
# [3]

print(stats.mode(a, axis=None).count)
# [3]

print(stats.mode(a, axis=0))
# ModeResult(mode=array([[3, 1, 0, 0]]), count=array([[1, 1, 1, 1]]))

print(stats.mode(a, axis=1))
# ModeResult(mode=array([[0],
#        [1],
#        [8],
#        [5],
#        [4]]), count=array([[1],
#        [1],
#        [2],
#        [2],
#        [1]]))

関連記事、参考資料

コメント