如果我有这样的列表:
results=[-14.82381293, -0.29423447, -13.56067979, -1.6288903, -0.31632439,
0.53459687, -1.34069996, -1.61042692, -4.03220519, -0.24332097]
我想在Python中计算此列表的方差,即与均值平方差的平均值。
我该怎么办?访问列表中的元素进行计算使我困惑于平方差。
最佳答案
您可以使用numpy的内置函数 var
:
import numpy as np
results = [-14.82381293, -0.29423447, -13.56067979, -1.6288903, -0.31632439,
0.53459687, -1.34069996, -1.61042692, -4.03220519, -0.24332097]
print(np.var(results))
这给你
28.822364260579157
如果-由于某种原因-您不能使用
numpy
和/或您不想为其使用内置函数,则还可以使用例如“一个list comprehension:# calculate mean
m = sum(results) / len(results)
# calculate variance using a list comprehension
var_res = sum((xi - m) ** 2 for xi in results) / len(results)
这会给您相同的结果。
如果您对标准偏差感兴趣,则可以使用numpy.std:
print(np.std(results))
5.36864640860051
@Serge Ballesta explained very well方差
n
和n-1
之间的差异。在numpy中,您可以使用ddof
选项轻松设置此参数;它的默认值为0
,因此对于n-1
情况,您可以简单地执行以下操作:np.var(results, ddof=1)
“手动”解决方案在@Serge Ballesta's answer中给出。
两种方法都产生
32.024849178421285
。您还可以为
std
设置参数:np.std(results, ddof=1)
5.659050201086865
关于python - 如何在python中计算列表的方差?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35583302/