Numpyで代表値(平均値、中央値や最頻値)を算出する方法について記載する。平均値はnumpy.mean、中央値はnumpy.median、最頻値はSciPyのscipy.stats.modeを用いる。
- numpy.mean – NumPy v1.23 Manual
- numpy.median – NumPy v1.23 Manual
- scipy.stats.mode – SciPy v1.9.2 Manual
平均値: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]]))
コメント