为何用NumPy与SciPy计算均值(一阶矩)会得到不同结果?
为什么NumPy均值与SciPy一阶矩结果不同?
这两个函数计算的根本不是同一类统计量:
np.mean()计算的是一阶原点矩,也就是常规的算术平均数,公式为 $\frac{1}{n}\sum_{i=1}^n x_i$。对数组[1,2,3]来说,就是$(1+2+3)/3=2.0$,和输出结果一致。scipy.stats.moment(arr, moment=1)默认计算的是一阶中心矩,公式为 $\frac{1}{n}\sum_{i=1}^n (x_i - \mu)$,其中$\mu$是数组的均值。对这个例子来说,就是$[(1-2)+(2-2)+(3-2)]/3 = (-1+0+1)/3=0.0$,所以输出为0。
如果想用SciPy得到和NumPy均值一致的结果,只需指定center=False参数来计算原点矩:
print(scipy.stats.moment(arr, moment=1, center=False)) # 输出2.0
内容的提问来源于stack exchange,提问作者Juliette
相关产品推荐
相关产品推荐

