Python 3 で数学を。

Python 3 とライブラリで数学の問題を解いていきます。統計学や機械学習はときどき。

加重平均 (重み付き平均)。自作関数。(Python 3: math, fsum(), NumPy)

使用するライブラリ

標準ライブラリの math

Python 3 コード

weighted_mean.py

#!/usr/bin/env python3


"""(docstring)
"""


from math import fsum


def weighted_mean(w, n):
    """(docstring)
    """
    # 加重平均 (重み付き平均)の数式: Σwx / Σw
    # 小数を扱うときには、標準ライブラリの math.fsum() が優秀。
    return fsum(w*n) / fsum(w)


if __name__ == '__main__':
    import numpy as np

    w1 = np.array([2, 14, 8, 32])
    n1 = np.array([1, 2, 5, 7])

    w2 = np.array([0.1, 0.1, 0.7, 0.1])
    n2 = np.array([1, 2, 3, 4])

    w3 = np.array([2/5, 3/5])
    n3 = np.array([59, 64])

    w4 = np.array([1/3, 2/3])
    n4 = np.array([0.330, 0.285])

    w5 = np.array([3, 1])
    n5 = np.array([7, 11])

    w6 = np.array([5, 15])
    n6 = np.array([-2, 2])

    w7 = np.array([0.25]*4)
    n7 = np.array([1, 2, 3, 4])

    w_list = [w1, w2, w3, w4, w5, w6, w7]
    n_list = [n1, n2, n3, n4, n5, n6, n7]

    for w, n in zip(w_list, n_list):
        print(weighted_mean(w, n))

    # なお、NumPy では、numpy.average() で加重平均 (重み付き平均)を求めることができる。

出力

$ python3 weighted_mean.py
5.25
2.8
62.0
0.3
8.0
1.0
2.5

参考文献 (数式等を参考)

マンガ 「代数学」超入門 足し算、引き算から2次方程式まで (ブルーバックス)

マンガ 「代数学」超入門 足し算、引き算から2次方程式まで (ブルーバックス)

関連過去記事

py3math.hatenablog.com

py3math.hatenablog.com

py3math.hatenablog.com

py3math.hatenablog.com

py3math.hatenablog.com

py3math.hatenablog.com

py3math.hatenablog.com

py3math.hatenablog.com

py3math.hatenablog.com

py3math.hatenablog.com