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打印出空白。此外,我不认为我正在编写正确的函数,以平均值减去每个正数,任何帮助都会很高兴
答案 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])
希望这有帮助