リストやnumpyの平均値を求める【Python】

pythonの平均値のアイキャッチPython

リスト(list)の平均値

sum()/len()

リストに対して平均値を求めたいならこの方法が一番手っ取り早いですし、簡単なのでオススメです。
sum()len()はどちらも組み込み関数なのでimportする必要もありません。

x = [i for i in range(1,10)]
average = sum(x)/len(x)
print(average)
# 5.0

statistics.mean()

sum()/len()でなく、明示的に平均を計算したいならstatistics.mean()を使いましょう。

statisticsは標準ライブラリなのでインストールはしなくてOKです。

import statistics

x = [i for i in range(1,10)]
print(statistics.mean(x))
# 5

numpyで平均値

numpyでは平均値を求める関数としてmean()average()の2つがありますが、違いは加重平均ができるか、できないからしいです。
mean()ができず、
average()ができます。

ただし、重みが与えられなければ同じ動作をします。

np.mean() vs np.average() in Python NumPy?
I notice that In : np.mean() Out: 2.0 In : np.average() Out: 2.0 However, there should be some differences, since after all they are two different functions. .....

numpy.mean()

まずは普通の平均

import numpy as np

x = np.arange(1,10)
print(np.mean(x))
# 5.0

次は2次元以上の配列に対して行った場合。
2次元以上に対してmean()をすると全ての要素を足し合わせて平均することができる。
軸を指定して平均することも可能

x = np.array([[1, 2],[3,4]])
print(np.mean(x))
# 2.5
print(np.mean(x, axis=0))
# [2. 3.]
print(np.mean(x, axis=1))
# [1.5 3.5]

numpy.average()

まずは普通の平均

x = np.arange(1,10)
print(np.average(x))
# 5.0

mean()と同様に2次元以上に対しても平均を求めることが可能です。
また軸の指定も同じく使えます。

x = np.array([[1, 2],[3,4]])
print(np.average(x))
# 2.5
print(np.average(x, axis=0))
# [2. 3.]
print(np.average(x, axis=1))
# [1.5 3.5]

加重平均もやってみましょう

そもそもの加重平均については以下の記事がわかりやすいです

加重平均の意味と計算方法
「平均」というと、一般的に、各データの値を足し合わせ、データ数で割って計算する算術平均をイメージしますよね。実際によく使われています。でも、実は平均のにもいくつかの種類があり、用途によってつかい分けられています。参考記事 平均値の種類はひと
x = np.arange(1,10)
weight = [i for i in range(1,10)]
print(np.average(x, weights=weight))
# 6.333333333333333

コメント