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