用Python怎么算Mean和standard deviation

Python015

用Python怎么算Mean和standard deviation,第1张

可以用numpy模块实现:

import numpy

def cal_mean_std(sum_list_in):

    # type: (list) -> tuple

    N = sum_list_in.__len__()

    narray = numpy.array(sum_list_in)

    sum = narray.sum()

    mean = sum / N

    narray_dev = narray - mean

    narray_dev = narray_dev * narray_dev

    sum_dev = narray_dev.sum()

    DEV = float(sum_dev) / float(N)

    STDEV = numpy.math.sqrt(DEV)

    print "mean:", mean, " DEV:", DEV, " STDEV:", STDEV

    return mean, DEV, STDEV

均值为mean,方差为DEV,标准差是STDEV

传入数据是一个list:sum_list_in

方法一:

scores = [91, 95, 97, 99, 92, 93, 96, 98]

scores2 = []

avg = sum(scores) / len(scores)

print('平均成绩是:{}'.format(avg))

for i in scores:

if i avg># 少于平均分的成绩放到新建的空列表中

scores2.append(i)

print('低于平均成绩的有:{}'.format(scores2))

方法二:

导入函数库

import numpy as np # 导入 numpy库,as 即为导入的库起一个别称,别称为np

scores1 = [91, 95, 97, 99, 92, 93, 96, 98]

scores2 = []

average = np.mean(scores1) # 一行解决。

print('平均成绩是:{}'.format(average))

# 下面展示一种NumPy数组的操作,感兴趣的同学可以自行去学习哈。

scores3 = np.array(scores1)

print('低于平均成绩的有:{}'.format(scores3[scores3

#-*-coding:utf-8-*-

f = open("1.txt")

s = f.read()

f.close()

ls = s.split("\n")

s = ""

for l in ls:

    ss = l.split("\t")

    le =  len(ss)

    if le > 2:

        sum = 0

        for i in range(2,le):

            sum += int(ss[i])

        print 1.0 *sum / (le-2),'\t',le-2   

        s += ss[0]+"\t"+ss[1]+"\t"+str(1.0 *sum / (le-2)) + "\t" + str(le-2) + "\n"

f = open("2.txt","w")

f.write(s)

f.close()

运行结果:

41.75 4

70.6666666667 3

35.5714285714 7

cat 2.txt

广州 guangzhou 41.75 4

广州 guangzhouone 70.6666666667 3

深圳 shenzhen 35.5714285714 7