【发布时间】:2014-07-24 07:20:36
【问题描述】:
我试图弄清楚如何创建一个脚本来计算文件的标准偏差。例如,假设我 DLed 一个带有值列表的 csv。我想通过运行 python 程序找到这些值的 SD。我们这里没有使用 numpy!
【问题讨论】:
-
那么你到底卡在哪里了?公式很简单。
标签: python-3.x statistics opencsv standard-deviation
我试图弄清楚如何创建一个脚本来计算文件的标准偏差。例如,假设我 DLed 一个带有值列表的 csv。我想通过运行 python 程序找到这些值的 SD。我们这里没有使用 numpy!
【问题讨论】:
标签: python-3.x statistics opencsv standard-deviation
如果允许使用标准库,
import math
xs = [0.5,0.7,0.3,0.2] # values (must be floats!)
mean = sum(xs) / len(xs) # mean
var = sum(pow(x-mean,2) for x in xs) / len(xs) # variance
std = math.sqrt(var) # standard deviation
如果不是,您需要手动估算sqrt。例如,您可以使用二分搜索或Newton's Method。这是wikipedia page 的方法
【讨论】:
在 Python 3.4 及以上版本中,有一个名为 statistics 的包,具有 standard deviation (pstdev) 和其他功能
以下是如何使用它的示例:
import statistics
data = [1, 1, 2.5, 6.5, 7.3, 8, 9.2]
print(statistics.pstdev(data))
# 3.2159043543498815
【讨论】:
filename = "C:\Users\mmb0368\Desktop\input.txt"
file = open("C:\Users\mmb0368\Desktop\input.txt","rb")
n = file.readlines()
num_list = map(lambda n: n.rstrip("\n"), n)
num_list = [int(x) for x in num_list]
mean = sum(num_list)/len(num_list)
print mean, max(num_list), min(num_list)
for snDev in num_list:
snDev = mean**(1.0/2)
print snDev
【讨论】:
from math import sqrt
n= [11, 8, 8, 3, 4, 4, 5, 6, 6, 7, 8]
mean =sum(n)/len(n)
SUM= 0
for i in n :
SUM +=(i-mean)**2
stdeV = sqrt(SUM/(len(n)-1))
print(stdeV)
【讨论】: