def fangcha(): a=float(raw_input("请输入a:")) b=float(raw_input("请输入b:")) c=float(raw_input("请输入C:")) d=(a+b+c)/3.0 e=((a-d)**2+(b-d)**2+(c-d)**2)/3.0 print "平均数是:%f方差是:%f" %(d,e) fangcha() Python2.7可用
站在用户的角度思考问题,与客户深入沟通,找到荷塘网站设计与荷塘网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站建设、成都做网站、企业官网、英文网站、手机端网站、网站推广、国际域名空间、网站空间、企业邮箱。业务覆盖荷塘地区。
以下为代码:
numstr = input("请输入全部数据:用英文逗号(,),中文逗号(,),\
空格( ),制表符(tab键)或换行(请一次性复制过来)中的一种统一分隔数据:")
if "," in numstr:
numlist = numstr.split(",")
elif "," in numstr:
numlist = numstr.split(",")
elif "\t" in numstr:
numlist = numstr.split("\t")
elif "\n" in numstr:
numlist = numstr.split("\n")
elif " " in numstr:
numlist = numstr.split(" ")
else:
numlist = [numstr]
numlist = list(map(lambda x:x.strip(",").strip(",").\
strip("\t").strip("\n").strip(" "), numlist))
for i in numlist.copy():
try:
a = float(i)
except:
numlist.remove(i)
print("已过滤字符串:%s"%i)
#好了,上面很多只是方便用户而已(但还是有一些有用的),主要是下面
numlist = list(map(lambda x:float(x), numlist))#所有字符串转为浮点
print("最终数列:",numlist)#输出最终数列,进行核对
average = sum(numlist)/len(numlist)#用数列和除以出列长度得到平均数
variance = 0#方差,先记为0
for i in numlist:#遍历列表
variance += (i - average) ** 2#反正就是公式对吧,先加进去
variance /= len(numlist)#还是公式,那一长串还得除以一个数列长度
print("均值:%.2f\n方差:%.2f"%(average, variance))#分两行输出
以下为输出效果:
请输入全部数据:用英文逗号(,),中文逗号(,),空格( ),制表符(tab键)或换行(请一次性复制过来)中的一种统一分隔数据:38,22,99,10,99,7, 25,,40
已过滤字符串:
最终数列: [38.0, 22.0, 99.0, 10.0, 99.0, 7.0, 25.0, 40.0]
均值:42.50
方差:1181.75
以下为解析:
平均值的思路就是总和除以列表长度,方差的思路就是把所有的(x-均值)²加起来,最后再除以一个长度即可。
本程序的优点:输入时逗号后出现空格与不小心多打逗号等情况都不会出问题,可以接受小数,可以先输出最终数列以供核对。
numpy计算平均数 标准差 相关系数等基本知识
NumPy 是python 语言的一个第三方库,其支持大量高维度数组与矩阵运算。此外,NumPy 也针对数组运算提供大量的数学函数。
#导入Numpy库,并命名为np
import numpy as np
#创建一维数组
a = np.array([1, 2, 3])
# NumPy可以很方便地创建连续数组,比如我使用arange或linspace函数进行创建:
b = np.arange(1,5,1) // 返回一个有终点和起点、固定步长的排列,如起点是1,终点是4,步长为1,即【1,2,3,4】,
c = np.linspace(1,9,5) 返回一个有终点和起点、元素个数的的排列,如起点是1,终点是9,元素个数为5,即【1,3,5,7,9】
#通过NumPy可以自由地创建等差数组,同时也可以进行加、减、乘、除、求n次方和取余数。
求和:np.sum(a)
求取平均值:np.mean(a)
求取中位数:np.median(a)
求取加权平均数:np.average(a)
求取方差:var() np.var(a)
求取最小值:np.amin(a)
求取最大值:np.amax(a)
将两个数相加:np.add(x1, x2)
将两个数相减:np.subtract(x1, x2)
将两个数相乘:np.multiply(x1, x2)
将两个数相除:np.divide(x1, x2)
立方:np.power(x1, x2)
除余:np.remainder(x1, x2)
相关系数计算:np.corrcoef(a1, a2) (a1、a2都是矩阵)
自定义函数求解即可,参考代码如下:
def f_sigma(x):
# 通过Python定义一个计算变量波动率的函数
# x:代表变量的样本值,可以用列表的数据结构输入
n = len(x)
u_mean = sum(x)/n #计算变量样本值的均值
z = [] #生成一个空列表
for t in range(n):
z.append((x[t]-u_mean)**2)
return (sum(z)/(n-1))**0.5 # n-1 自由度
a = f_sigma(x = [1,2,3])
print('样本方差:', a)