Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用列表中的循环查找标准偏差_Python_Python 3.x - Fatal编程技术网

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