本文价值与收获
看完本文后,您将能够作出下面的界面
基础知识
标准差(Standard Deviation) ,是离均差平方的算术平均数的算术平方根,用σ表示。标准差也被称为标准偏差,或者实验标准差,在概率统计中最常使用作为统计分布程度上的测量依据。
标准差是方差的算术平方根。标准差能反映一个数据集的离散程度。平均数相同的两组数据,标准差未必相同。
如何计算标准差?
本人是一枚生物学的学生,由于对生物信息学特别感兴趣,于是想自学生物信息学(新手莫怪)。了解到生物信息学要有编程基础,尤其是要会一门编程语言,例如:R语言、Python、Perl等,还要熟悉Linux系统,作为生信小白,听说Python挺简单的,于是就自学了Python,花了两天时间了解了Python的基础语法后,今天想做个练习题试试手(实践是检验真理的唯一标准),下面是练习题:(试题来源:《PYTHON生物信息学数据管理》)
今日练习题:如何计算标准差?
计算标准差有些复杂,因为需要 for 循环来计算每个值的平方差,必须先有预先计算出 的平均值。
然后将每个值减去平均值((value-average) * *2)。 所有平方差要加在一起,除以结果的数量,最后计算结果的平方根。平方差求和可以设置一个变量为 0.0,每得到一个平方差就加上去。
公式如下:
书中给出的计算的脚本是:
import math
data = [3.53,3.47,3.51,3.72,3.43]
average = sum(data)/len(data)
total = 0.0
for value in data:
total += (value - average)**2
stddev = math.sqrt(total/len(data))
print(stddev)
参照书中给出的答案,结合前面所用到的input()函数,对这个计算标准差的脚本进行升级。至于怎么升级,答案肯定是增加用户输入。此次升级脚本的意义和难度都不大,完全是为了巩固一下前面所学的知识(PS:主要是已经学会了input()函数,要不然还是有点难度的,毕竟是会了不难,难了不会!)
话不多说,上手最重要,下面进行分步解析。
第一步:导入模块
这里涉及计算,肯定是首先导入math模块喽!
import math
导入成功,万里长征第一步完成。
第二步:获取用户输入
①首先定义数据变量列表
data=[]
②获取用户输入,为了区分不同的数值,两个数据之间以“,”分割,这里使用split(',')。(split(',')在[自学生信Python(第四天)]https://www.jianshu.com/p/d7ebffdfcbe0已经讲过,这里就直接使用了。)
data1 = input("请输入数值:",).split(',')
③将用户输入的字符串转化为数值
i=0
for i in range(0,len(data1)):
data.append(eval(data1[i]))
i=i+1
**第三步:计算公式
观察公式可以知道,首先我们需要求出输入的数据的平均值(平均值计算参考https://www.jianshu.com/p/d7ebffdfcbe0)
然后计算每个数和平均值差的平方,然后求和,再求其平均值,最后再求其平方根。
①先求平均值
average = sum(data)/len(data)
②求每个数和平均值差的平方,并求和
total = 0.0
for value in data:
total += (value - average)**2
③求上述和的平均值,然后求其结果的平方根
stddev = math.sqrt(total/len(data))
**第四步:输出结果
print(stddev)
综上所述,将结果汇总,其完整代码如下:
import math
data=[]
i = 0
data1 = input("请输入数值:",).split(',')
for i in range(0,len(data1)):
data.append(eval(data1[i]))
i=i+1
average = sum(data)/len(data)
total = 0.0
for value in data:
total += (value - average)**2
stddev = math.sqrt(total/len(data))
print(stddev)
使用简单的几行代码,实现获取用户输入,并计算出用户输出的结果。感兴趣的蛇友们,还可以加入异常判断,如果用户输入的不是数字而是别的什么,实现也能使程序运行不报错,而且能提醒用户重新输入数据的功能。
虽然这是个小小的计算程序,但对于初学者的我来说每一次对原代码的升级改造,哪怕是读懂后的注释都感觉是一次进步提升,总之代码虽小,动手最重要!希望更多学习Python的爱好者不要像我一样眼高手低,学习编程就是要,思考,敲码,思考,敲码,敲码,再敲码!
本文价值与收获
看完本文后,您将能够作出下面的界面
计算标准差基础知识
标准差(Standard Deviation) ,是离均差平方的算术平均数的算术平方根,用σ表示。标准差也被称为标准偏差,或者实验标准差,在概率统计中最常使用作为统计分布程度上的测量依据。
标准差是方差的算术平方根。标准差能反映一个数据集的离散程度。平均数相同的两组数据,标准差未必相同。SwiftUI 计算数组标准差Standard Deviation
本文价值与收获
看完本文后,您将能够作出下面的界面
基础知识
标准差(Standard Deviation) ,是离均差平方的算术平均数的算术平方根,用σ表示。标准差也被称为标准偏差,或者实验标准差,在概率统计中最常使用作为统计分布程度上的测量依据。
标准差是方差的算术平方根。标准差能反映一个数据集的离散程度。平均数相同的两组数据,标准差未必相同。SwiftUI 计算数组标准差Standard Deviation
import SwiftUI struct ContentView: View { @State var data1 = [1.0,3.0,5.0,7.0,9.0] @State var rs1 = 0.0 @State var data2 = [1.0,1.0,2.0,2.0,3.0] @State var rs2 = 0.0 var body: some View { VStack{ Text("数组1:\(data1.description)").padding() Text("计算结果:\(self.rs1,specifier: "%g")") Divider() Text("数组2:\(data2.description)").padding() Text("计算结果:\(self.rs2,specifier: "%g")") Button("计算标准差Standard Deviation"){ self.rs1 = self.data1.std self.rs2 = self.data2.std } Text("标准差是方差的算术平方根。标准差能反映一个数据集的离散程度。平均数相同的两组数据,标准差未必相同。") } } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } } extension Array where Element == Double { var sum: Double { return self.reduce(0.0, +) } // Find the average (mean) var mean: Double { return sum / Double(self.count) } // Find the variance sum((Xi - mean)^2) / N var variance: Double { let mean = self.mean // cache so not recalculated for every element return self.map { pow(($0 - mean), 2) }.mean } var std: Double { return sqrt(variance) } }
技术交流
QQ:3365059189
SwiftUI技术交流QQ群:518696470
我在这里很新,目前正在尝试使用Java计算标准偏差(我已经用谷歌搜索了哈哈),但是在使其正常工作方面存在很多问题
我有一个由用户输入的十个值,然后我必须计算到目前为止我所理解的标准偏差,这要归功于已经回答过的人们,我找到了数组的均值然后完成了计算
double two = total[2];
double three = total[3];
double four = total[3];
double five = total[4];
double six = total[6];
double seven = total[7];
double eight = total[8];
double nine = total[9];
double ten = total[10];
double eleven = average_total;
mean = one + two + three + four + five + six + seven + eight + nine + ten + eleven;
mean = mean/11;
//one = one - mean;
//System.out.println("I really hope this prints out a value:" +one);
*/
//eleven = average_total - mean;
//eleven = Math.pow(average_total,average_total);
//stand_dev = (one + two + three + four + five + six + seven + eight + nine + ten + eleven);
//stand_dev = stand_dev - mean;
// stand_dev = (stand_dev - mean) * (stand_dev - mean);
// stand_dev = (stand_dev/11);
// stand_dev = Math.sqrt(stand_dev);
我已经将数据存储在10个值的数组中,但是我不太确定如何从数组中打印数据,然后进行计算而不必将输入代码存储在这里数据中,而这些数据我已经处理过
谢谢您的宝贵时间,非常感谢:)