Python NumPy中的np.mean()vs np.average()?

问题描述 投票:147回答:4

我注意到了

In [30]: np.mean([1, 2, 3])
Out[30]: 2.0

In [31]: np.average([1, 2, 3])
Out[31]: 2.0

但是,应该存在一些差异,因为毕竟它们是两个不同的功能。

它们之间有什么区别?

python numpy statistics average mean
4个回答
155
投票

np.average采用可选的权重参数。如果没有提供它们是等效的。看看源代码:MeanAverage

np.mean:

try:
    mean = a.mean
except AttributeError:
    return _wrapit(a, 'mean', axis, dtype, out)
return mean(axis, dtype, out)

np.average:

...
if weights is None :
    avg = a.mean(axis)
    scl = avg.dtype.type(a.size/avg.size)
else:
    #code that does weighted mean here

if returned: #returned is another optional argument
    scl = np.multiply(avg, 0) + scl
    return avg, scl
else:
    return avg
...

21
投票

np.mean总是计算算术平均值,并且还有一些输入和输出的附加选项(例如,要使用的数据类型,放置结果的位置)。

如果提供np.average参数,weights可以计算加权平均值。


18
投票

在某些版本的numpy中,您必须注意另一个重要的区别:

average不会考虑帐户掩码,因此计算整个数据集的平均值。

mean接受帐户掩码,因此仅计算未屏蔽值的均值。

g = [1,2,3,55,66,77]
f = np.ma.masked_greater(g,5)

np.average(f)
Out: 34.0

np.mean(f)
Out: 2.0

2
投票

在您的调用中,这两个函数是相同的。

average可以计算加权平均值。

Doc链接:meanaverage

© www.soinside.com 2019 - 2024. All rights reserved.