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

KJo*_*KJo 0 python row mean multiple-columns 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
Run Code Online (Sandbox Code Playgroud)

我正在寻找第一块代码输出的标准偏差。它导致七个数字的列表,即:[[-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 打印出空白。此外,我认为我没有正确编写函数以将每个正数减去平均值,任何帮助都会受到赞赏

ins*_*get 5

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

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

import numpy
numpy.std(myList)
Run Code Online (Sandbox Code Playgroud)

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

import numpy
numpy.std(zip(*myList)[i])
Run Code Online (Sandbox Code Playgroud)

如果要排除列中的负数:

import numpy
import itertools
numpy.std([i for i in itertools.izip(*myList)[i] if i>=0])
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助