在python中计算数字的标准偏差
我试图计算文档中一组数字的标准偏差。 以下是我目前得到的信息:在python中计算数字的标准偏差,python,Python,我试图计算文档中一组数字的标准偏差。 以下是我目前得到的信息: with open("\\Users\\xxx\\python_courses\\1DV501\\assign3\\file_10000integers_B.txt", "r") as f: total2 = 0 number_of_ints2 = 0 deviation = 0.0 variance = 0.0 for line in f: for num in line.split
with open("\\Users\\xxx\\python_courses\\1DV501\\assign3\\file_10000integers_B.txt", "r") as f:
total2 = 0
number_of_ints2 = 0
deviation = 0.0
variance = 0.0
for line in f:
for num in line.split(':'):
total2 += int(num)
number_of_ints2 += 1
average = total2/number_of_ints2
for line in f:
for num in line.split(":"):
devation += [(int(num) - average) **2
但我完全被卡住了。我不知道怎么做。数学不是我的强项,所以这很难。
此外,如果有任何区别,文档中会混合负数和正数。您可以使用该功能,这是官方文档:
在列表中设置数字,然后应用函数:
from statistics import stdev
mylist = [1,2,5,10,100]
std = stdev(mylist)
您可以使用一些可用的库,例如,如果我有从某处获得的数据
>>> import random
>>> data = [random.randint(1,100) for _ in range(100)] # assume from your txt file
我可以使用statistics.stdev
>>> import statistics
>>> statistics.stdev(data)
28.453646514989956
或numpy.std
>>> import numpy as np
>>> np.std(data)
28.311020822287563
>>> import scipy.stats
>>> scipy.stats.tstd(data)
28.453646514989956
或者scipy.stats.tstd
>>> import numpy as np
>>> np.std(data)
28.311020822287563
>>> import scipy.stats
>>> scipy.stats.tstd(data)
28.453646514989956
或者如果你想自己滚
def stddev(data):
mean = sum(data) / len(data)
return math.sqrt((1/len(data)) * sum((i-mean)**2 for i in data))
>>> stddev(data)
28.311020822287563
请注意,计算值的细微差异将取决于您想要的是“样本”标准偏差还是“总体”标准偏差。问题在于您在文件上迭代了两次,并且在第二次循环之前没有将读取器重置为文件的开头。您可以使用
f.seek(0)
来执行此操作
total2 = 0
number_of_ints2 = 0
deviation = 0.0
variance = 0.0
with open("numbers.txt", "r") as f:
for line in f:
for num in line.split(':'):
total2 += int(num)
number_of_ints2 += 1
average = total2 / number_of_ints2
f.seek(0) # Move back to the beginning of the file.
for line in f:
for num in line.split(":"):
deviation += (int(num) - average) ** 2
为什么不能使用内置模块的功能来实现此功能?这是一个限制您使用外部库的家庭作业问题吗?您的代码有什么问题(除了“with”后面的缩进错误之外)?到目前为止,我觉得还可以。您应该将偏差除以整数-1得到方差,然后取平方根得到标准值deviation@Stefan它不像程序中那样缩进,它是在网站上格式化时发生的:)。。。如果你出于某种原因使用Python2,你的除法可能是整数除法。是有一个特殊的编程问题,还是你只是不知道如何计算?