Python 使用列表中的循环查找标准偏差
我想在列表中找到特定窗口的标准偏差。我的意思是,例如:Python 使用列表中的循环查找标准偏差,python,python-3.x,Python,Python 3.x,我想在列表中找到特定窗口的标准偏差。我的意思是,例如: num_list = [1, 2, 3, 4, 5] window = 3 因此,我将找到[1,2,3],[2,3,4]和[3,4,5]的标准偏差 我的做法如下: def mean(data): n = len(data) mean = sum(data) / n return mean def standard_deviation(data): average = mea
num_list = [1, 2, 3, 4, 5]
window = 3
因此,我将找到[1,2,3]
,[2,3,4]
和[3,4,5]
的标准偏差
我的做法如下:
def mean(data):
n = len(data)
mean = sum(data) / n
return mean
def standard_deviation(data):
average = mean(data)
deviations = [(x - average) ** 2 for x in data]
variance = sum(deviations) / window
standard_deviation=math.sqrt(variance)
return standard_deviation
first_mean = mean(num_list[:window])
first_standard_deviation = standard_deviation(num_list[:window])
average_list = [first_mean]
standard_deviation_list=[first_standard_deviation]
for i in range(1, len(num_list)-window+1):
first_mean -= num_list[i-1] / window
first_mean += num_list[i+window-1] / window
deviations=[(i-first_mean) **2 for i in num_list]
first_standard_devaiation=math.sqrt(sum(deviations)/window)
average_list.append(first_mean)
standard_deviation_list.append(first_standard_deviation)
当测试列表中的其他数字时,标准偏差似乎与其他子列表的第一个子列表的值相同,这是不正确的。我不确定哪一部分我做错了。您可以通过以下帮助简化代码: 印刷品:
0.816496580927726
0.816496580927726
0.816496580927726
您提供的输入的输出应该是什么<代码>统计。stdev([1,2,3])是
1.0
我提供的输入的输出将是[0.816,0.816,0.816]
0.816496580927726
0.816496580927726
0.816496580927726