2013-12-17 144 views
-2

我在查找列表的标准偏差时遇到问题,并且不太确定我做错了什么。代码是低于任何帮助,将不胜感激。查找标准偏差

n = len(combTimeArray) 

numbers = [] 

mean = sum(combTimeArray)/len(combTimeArray) 

numbers.append(int(combTimeArray) 

for n in range(len(numbers) - 1) 
     if numbers[n] > mean 
       numbers.append((numbers[n] - average)**2) 
     if numbers[n] < mean 
       numbers.append((mean - numbers[n])**2) 
     SD = (sum(numbers)/len(numbers))**(1/2.0) 
     print SD 
+2

这是功课吗?如果没有,请使用'numpy.std'。 – piokuc

+0

@MartijnPieters然而,必须指出,OP接受了建议的编辑http://stackoverflow.com/review/suggested-edits/3603438 –

+0

你真的得到什么错误?请回复追溯 –

回答

1
import numpy 
SD = numpy.std(combTimeArray) 
+0

什么部分会 进口numpy SD = numpy.std(combTimeArray) 替换? – user3092850

+0

唯一缺少的是combTimeArray的赋值,它也从您的问题中缺失。这段代码将把标准偏差放在SD中。 –

0

这是很难理解你的代码:P首先,你可以用for-each循环替换for循环 - >这使你的代码更容易阅读和删除丑陋号[]声明。

这里是我的示例代码(如果你不希望使用numpy的或不便。类似)

from math import sqrt,pow 
numbers = [2,4,4,4,5,5,7,9] 

def standardDeviation(l): 
    mean = sum(l)/len(l) 
    differencelist = [] 
    for elem in l: 
     differencelist.append(pow(elem-mean,2)) 
return sqrt(sum(differencelist)/len(differencelist)) 
0

这已经有一段时间,因为我必须做的标准偏差,所以你应该仔细检查数学分手自己(和大家是正确的告诉你这样做numpy的,除非你必须这样做了家庭作业或其他原因),但一些注意事项:

  1. Python有一个absolute value function

  2. 你可以做一个for n in numbers,而不是通过索引访问每个数字 - 更简单,更清洁。

  3. 它看起来像你的numbers数组首先存储所有的值,然后你添加每个数字从均值到相同列表的差异。要么做第二个列表,要么查看map函数,如果你想要特别花哨。