【NumPy入門】加重平均(重み付き平均)も計算できるnp.average!

こんにちは!インストラクターのフクロウです!

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で試して見てください。

新しい発見があって勉強が楽しくなるかも、ですよ!

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

フクロウ

フクロウ

第一言語はPythonです。
皆さんRustやりましょう。