我无法找到列表的标准偏差,也不太确定我做错了什么。代码低于任何帮助将不胜感激。
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
答案 0 :(得分:1)
import numpy
SD = numpy.std(combTimeArray)
答案 1 :(得分:0)
很难理解你的代码:p首先你可以用for-each循环替换for循环 - &gt;这使您的代码更容易阅读并删除丑陋的数字[]语句。
这是我的示例代码(如果你不想使用numpy或smth。类似)
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))
答案 2 :(得分:0)
已经有一段时间了,因为我必须做标准偏差,所以你应该自己仔细检查数学部分(并且每个人都是正确的告诉你做numpy,除非你必须做这个以完成家庭作业或其他原因)但一些说明:
Python有absolute value function
您可以执行for n in numbers
而不是通过索引访问每个号码 - 更简单,更清晰。
看起来您的numbers
数组首先存储所有值,然后您将添加从平均值到同一列表的每个数字的差异。要制作第二个列表,要么查看map功能,如果你想要超出范围。