试图找出如何从列表中获得标准偏差。我查了一些例子,由于某些原因我无法让他们工作。总计,中位数和平均数都很好,它是给出错误的标准偏差,而不确定如何将其打印出来。
这是我创建的代码,是的,我知道它可以缩短。但它是我第一次到处走。
我目前收到以下错误
AttributeError: 'module' object has no attribute 'stdev'
这是我创建的代码,是的,我知道它可以缩短。但它是我第一次到处走。
num1 = int(input("Insert first number"))
num2 = int(input("Insert Next number"))
num3 = int(input("Insert Next number"))
num4 = int(input("Insert Next number"))
num5 = int(input("Insert Next number"))
num6 = int(input("Insert Next number"))
num7 = int(input("Insert Next number"))
num8 = int(input("Insert Next number"))
num9 = int(input("Insert Next number"))
num10 = int(input("Insert Last number"))
x = ([num1, num2, num3, num4, num5, num6, num7, num8, num9, num10])
total = sum(x)
print (total)
mean = total / 10
print (mean)
median = sorted(x)[len(x)//2]
print (int(median))
import stat
stdeviation = stat.stdev(x)
print (stdeviation)
答案 0 :(得分:1)
抱歉,模块stat
与POSIX系统调用stat
不相关。无论如何,标准差是平均值与平均值之差的平方根。你可以直接这样做。好吧,实际上你想要计算"样本"标准偏差使用"贝塞尔的校正":不是平均平方差(除以样本数),而是平方差除以1比样本数。
简而言之:Python 3调用statistics.stdev
的样本标准差就是这样:
math.sqrt(sum([(val - mean)**2 for val in x])/(len(x) - 1))
答案 1 :(得分:0)
在Python 2中,numpy
模块提供了计算标准偏差的功能。如果您有一个列表,您可以将其转换为一个数组,该数组提供标准差作为成员函数:
import numpy
lst = [1, 4, 2, 5, 2, 2.5]
print numpy.array(lst).std()