NumPy有两个不同的函数用于计算平均值:
np.average()
并且
np.mean()
由于NumPy不太可能包含冗余特性,因此必须存在微妙的差异。
当我开始使用Python进行数据分析时,我对这个概念非常不清楚,所以我决定在这里提供详细的自我答案,因为我相信其他人也在苦苦挣扎。
np.average()
并且
np.mean()
由于NumPy不太可能包含冗余特性,因此必须存在微妙的差异。
当我开始使用Python进行数据分析时,我对这个概念非常不清楚,所以我决定在这里提供详细的自我答案,因为我相信其他人也在苦苦挣扎。
简短回答:
“Mean”和“Average”是两个不同的概念,人们常常混用这两个词语,但实际上它们是不同的。使用np.mean()函数可以计算出算术平均值,而np.average()函数,如果你不添加其他参数,也可以计算出算术平均值,但同时还能计算加权平均值。
详细回答和背景:
统计学:
由于NumPy主要用于处理数据集,因此了解这种概念会导致混淆的数学概念非常重要。在简单的数学和日常生活中,我们经常使用“平均值”和“算术平均值”这两个词语互换使用,但实际上它们是不同的。
NumPy中的区别:
回到本文主题。由于NumPy通常用于与数学相关的应用程序,因此它需要比像Excel这样使用Average()作为查找“算术平均值”的函数更加精确地区分average()和mean()之间的差异。
在NumPy中,np.mean()可以允许您计算指定轴上的“算术平均数”。
以下是使用方法:
myArray = np.array([[3, 4], [5, 6]])
np.mean(myArray)
还有一些参数可以更改使用的dType和函数计算沿哪个轴(默认为展平数组)。
另一方面,np.average()允许您采用“加权平均值”,其中数组中的不同数字可能具有不同的权重。例如,在文档中我们可以看到:
>>> data = range(1,5)
>>> data
[1, 2, 3, 4]
>>> np.average(data)
2.5
>>> np.average(range(1,11), weights=range(10,0,-1))
4.0
(1+2+3+4+5+6+7+8+9+10+11)/11 = 6
加权平均数涉及到以不同的权重包括数字。由于在我们上面的例子中它不包括整数,因此很难想象,所以我们将想象权重更好地适用于数字,并且它会看起来像这样:
(1+1+1+1+1+1+1+1+1+1+1+2+2+2+2+2+2+2+2+2+3+3+3+3+3+3+3+3+4+4+4+4+4+4+4+5+5+5+5+5+5+6+6+6+6+6+6+7+7+7+7+7+8+8+8+8+9+9+9+-11)/59 = 3.9~
Single point precision:
>>> a = np.zeros((2, 512*512), dtype=np.float32)
>>> a[0, :] = 1.0
>>> a[1, :] = 0.1
>>> np.mean(a)
0.546875
根据上述计算,我们的平均值似乎是0.546875,但如果我们使用dType参数转换为float64,则会得到不同的结果:
>>> np.mean(a, dtype=np.float64)
0.55000000074505806