こんにちは!インストラクターのフクロウです!
NumPyで平均を求める関数といえばnp.meanですが、これとは別にnp.averageという関数も用意されています。
np.averageはnp.meanと同じ単純平均を計算するだけでなく、加重平均についても計算することができます。
この記事では、np.averageの使い方について、簡単な算数の例を見ながら解説していきますよ!
np.averageとは
np.averageとは
- 単純平均
- 加重平均
の両方が計算できる関数です。(これらを忘れてしまった!という方は次の章も読んでください!)
パラメータを見てみましょう。
np.average( a= array_like_object, # 平均を出したい配列 axis=None, # 軸を指定 weights=array_like_object, # 重み配列 returned = False # 重みの合計を返すかどうか )
この中で必ず必要なのは、第一引数だけです。(他のパラメータはオプショナルです。)
axisは他のNumPy関数と同様の使い方ですね。
weightsは加重平均を出したいときに使います。第一引数と同じ形状の配列を渡します。
単純平均と加重平均
単純平均と加重平均、覚えていますか?
単純平均
単純平均は普通の平均ですね。
X = [x_1, …, x_i, …, x_N]の平均を計算するなら、以下のような式になります。
加重平均
これに対して加重平均とは、「重み付き平均」です。
先程のXだけでなく、Xの重みとしてW = [w_1, …, w_i, …, w_N]があって、重みを考慮した平均を計算します。
これらの考え方については、以下のサイトが非常にわかりやすくておすすめです。
これ以降は、「具体例で学ぶ数学」様の例題に沿ってサンプルコードを解説します。
np.averageの使い方
ここからは、先程の参考サイトの例題をnp.averageで試してみます。
import numpy as np
加重平均を使う例(2つの場合)
np.averageで加重平均を計算してみましょう。
平均を取りたい配列と、重みの配列を指定することで計算できますよ!
>>> x = np.array([70,90]) >>> w = np.array([20,30]) >>> # 単純平均 >>> np.average(x) 80.0 >>> # 単純平均はnp.meanでも計算可 >>> np.mean(x) 80.0 >>> # 加重平均 >>> np.average(x, weights=w) 82.0
加重平均を使う例(3つ以上の場合)
平均を計算したい配列の要素は何個でもOKです。
>>> prices = [200,100,60] >>> num_items = [10, 5, 20] >>> # 単純平均 >>> np.average(prices) 120.0 >>> # 加重平均 >>> np.average(prices, weights=num_items) 105.71428571428571
まとめ
この記事では加重平均を計算できるnp.average関数を解説しました。
「加重平均」という単語、覚えていましたか?
加重平均に限らず、小学校〜大学で習った算数・数学の問題はNumPyで実装してみると面白いですよ!
人工知能や機械学習にチャレンジする前に、必要な数学的操作をNumPyで試して見てください。
新しい発見があって勉強が楽しくなるかも、ですよ!