NumPy の mean()と average()の比較

Manav Narula 2021年7月18日
NumPy の mean()と average()の比較

平均は、一連の観測値の中心値です。幾何学的平均、調和平均、算術平均など、さまざまな形式の平均が存在する可能性があります。統計の世界では、算術平均と平均の両方が同じ意味で使用されます。これらは両方とも同じ式を使用して計算されます。つまり、合計観測値を合計観測数で割ったものです。

Python には、算術平均または平均を計算できる 2つの関数があります。これらは、NumPy モジュールで使用可能な numpy.mean() および numpy.average() 関数です。

これらの関数は両方とも、以下に示すように算術平均または平均を計算するために使用できます。

import numpy as np

arr = np.array([12, 15, 18, 19, 20])

print("Average Function: ", np.average(arr))
print("Type returned: ", type(np.average(arr)))

print("Mean Function: ", np.mean(arr))
print("Type returned: ", type(np.mean(arr)))

出力:

Average Function:  16.8
Type returned:  <class 'numpy.float64'>
Mean Function:  16.8
Type returned:  <class 'numpy.float64'>

これらは両方とも同じタイプの最終出力を返すことさえあり、これらの関数は両方とも同等であるように見える場合があることに注意してください。

ただし、それらの間にはいくつかの違いがあります。numpy.average() 関数は、配列の加重平均を計算することもできます。これは、numpy.mean() 関数では不可能です。このために、以下に示すように、重みをパラメーターとして関数に渡すだけです。

import numpy as np

arr = np.array([12, 15, 18, 19, 20])
arr_w = np.array([0.1, 0.1, 0.1, 0.2, 0.5])

print("Weighted Average Function: ", np.average(arr, weights=arr_w))

出力:

Weighted Average Function:  18.3

もう 1つの注目すべき違いは、np.mean() 関数には、dtypeoutwherekeepdims など、np.average() では使用できない他の多くのパラメーターを含めることができることです。

このような追加のパラメータは有益な場合があります。たとえば、平均が計算されるオブジェクトのタイプが不明またはあいまいな状況が発生する可能性があります。このような場合、dtype パラメータを使用してタイプを指定できます。out パラメータは、結果を代替配列に格納するかどうかを指定できます。axis パラメータを使用して、平均を計算する軸を設定することもできます。次のコードは、np.mean() 関数でのいくつかのパラメーターの使用を示しています。

import numpy as np

arr = np.array([[12, 15, 18, 19, 20], [10, 16, 7, 18, 20], [20, 12, 24, 11, 14]])

x = np.arange(3)
print("Mean Function: ", np.mean(arr, dtype=int, axis=1, out=x))
print("Output array: ", x)

出力:

Mean Function:  [16 14 16]
Output array:  [16 14 16]
著者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn