我正在定义一个计算列表标准偏差的函数。有时这个列表的平均值是负数,所以我的函数不能取负数的平方根,返回一个错误。
这个看似简单,就是想不出来。我想为我的函数写一个条件,说如果有一个负数,则乘以 -1,因为不能取负数的平方根。
我该如何写这个声明?
def stdevValue(lst):
"""calculates the standard deviation of a list of numbers
input: list of numbers
output: float that is the standard deviation
"""
stdev = 0
stdevCalc = (((sum(lst) - (meanValue(x)))/(len(lst)-1)))**0.5
stdev += stdevCalc
return stdev
请您参考如下方法:
您似乎误用了标准差公式。您根本不需要处理负数平方根的情况。在求和之前,您需要对值与平均值之间的每个差值进行平方,如下所示:
def stdevValue(lst):
m = meanValue(x) # wherever this comes from
return (sum((x - m) ** 2 for x in lst) / len(lst)) ** 0.5
这确保总和是非负,因此您可以取平方根而不用担心负值。 (如果您想要样本标准偏差,请除以 (len(lst) - 1))。
请参阅关于 Standard Deviation 的维基百科文章获取更多信息和示例。
