NumPy mean() 和 average()

Manav Narula 2021年7月18日
NumPy mean() 和 average()

平均值是一組觀察值的中心值。平均值可以有多種形式,例如幾何平均值,調和平均值,算術平均值。在統計領域,算術平均值和平均值可以互換使用。它們都使用相同的公式計算,即總觀測值之和除以觀測值總數。

在 Python 中,我們有兩個函式可以計算算術平均值或平均值。這些是 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

另一個顯著區別是 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