在python中找到一列数据的标准差

时间:2013-07-16 18:37:18

标签: python row multiple-columns mean standard-deviation

A.append([(float(a) + float(b) + float(c))/3,
          (float(d) + float(e) + float(f))/3,
          (float(g) + float(h) + float(i))/3,
          (float(j) + float(k) + float(l))/3,
          (float(m) + float(n) + float(o))/3,
          (float(p) + float(q) + float(r))/3,
          (float(s) + float(t) + float(u))/3])


def mean(A):
    positives = [b for b in A if b >= 0]
    E.append((len(positives)) / (len(A))*100)
    if positives:
        return sum(positives) / len(positives)
    else:
        return 0

C = map(mean, zip(*A))
print C

#3 sigma check
def sigma(A):
    positives = [b for b in A if b >= 0]
    if positives:
        F.append((positives - C) / len(A))

print F

我希望找到第一块代码的输出的标准偏差。它产生七个数字的列表,即:[[-9999.0, -9999.0, -9999.0, -9999.0, -9999.0, -9999.0, -9999.0], [-9999.0, -9999.0, -9999.0, -9999.0, -9999.0, -9999.0, -9999.0], [0.040896, 0.018690, 0.0056206, -9999.0, 0.038722, 0.018323, -9999.0], [0.03944364, -9999.0, 0.037885, 0.014316, -9999.0]]

第二个代码块找到列的平均值(['0.040170', '0.018057', '0.004782', '0.000000', '0.037378', '0.014778', '0.000000']

我开始编写第三块代码来查找标准差,但F打印出空白。此外,我不认为我正在编写正确的函数,以平均值减去每个正数,任何帮助都会很高兴

1 个答案:

答案 0 :(得分:4)

如果我理解你的问题,你有一个列表列表,其中每个子列表包含多个浮点数。

如果要计算数字列表的标准偏差:

import numpy
numpy.std(myList)

如果要计算列表列表的i“列”中所有数字的标准差:

import numpy
numpy.std(zip(*myList)[i])

如果要在列中排除负数:

import numpy
import itertools
numpy.std([i for i in itertools.izip(*myList)[i] if i>=0])

希望这有帮助