扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
对于气象绘图来讲,第一步是对数据的处理,通过各类公式,或者统计方法将原始数据处理为目标数据。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名申请、网站空间、营销软件、网站建设、娄星网站维护、网站推广。
按照气象统计课程的内容,我给出了一些常用到的统计方法的对应函数:
在计算气候态,区域平均时均要使用到求均值函数,对应NCL中的dim_average函数,在python中通常使用np.mean()函数
numpy.mean(a, axis, dtype)
假设a为[time,lat,lon]的数据,那么
需要特别注意的是,气象数据中常有缺测,在NCL中,使用求均值函数会自动略过,而在python中,当任意一数与缺测(np.nan)计算的结果均为np.nan,比如求[1,2,3,4,np.nan]的平均值,结果为np.nan
因此,当数据存在缺测数据时,通常使用np.nanmean()函数,用法同上,此时[1,2,3,4,np.nan]的平均值为(1+2+3+4)/4 = 2.5
同样的,求某数组最大最小值时也有np.nanmax(), np.nanmin()函数来补充np.max(), np.min()的不足。
其他很多np的计算函数也可以通过在前边加‘nan’来使用。
另外,
也可以直接将a中缺失值全部填充为0。
np.std(a, axis, dtype)
用法同np.mean()
在NCL中有直接求数据标准化的函数dim_standardize()
其实也就是一行的事,根据需要指定维度即可。
皮尔逊相关系数:
相关可以说是气象科研中最常用的方法之一了,numpy函数中的np.corrcoef(x, y)就可以实现相关计算。但是在这里我推荐scipy.stats中的函数来计算相关系数:
这个函数缺点和有点都很明显,优点是可以直接返回相关系数R及其P值,这避免了我们进一步计算置信度。而缺点则是该函数只支持两个一维数组的计算,也就是说当我们需要计算一个场和一个序列的相关时,我们需要循环来实现。
其中a[time,lat,lon],b[time]
(NCL中为regcoef()函数)
同样推荐Scipy库中的stats.linregress(x,y)函数:
slop: 回归斜率
intercept:回归截距
r_value: 相关系数
p_value: P值
std_err: 估计标准误差
直接可以输出P值,同样省去了做置信度检验的过程,遗憾的是仍需同相关系数一样循环计算。
f=[i for i in xrange(0,300,20)]
c=[round(5.0/9*(i-32),2) for i in f]
print f
print c
python2.7
描述
温度的刻画有两个不同体系:摄氏度(Celsius)和华氏度(Fahrenheit)。
请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度。
转换算法如下:(C表示摄氏度、F表示华氏度)
C = ( F - 32 ) / 1.8
F = C * 1.8 + 32
要求如下:
(1) 输入输出的摄氏度采用大写字母C开头,温度可以是整数或小数,如:C12.34指摄氏度12.34度;
(2) 输入输出的华氏度采用大写字母F开头,温度可以是整数或小数,如:F87.65指华氏度87.65度;
(3) 不考虑异常输入的问题,输出保留小数点后两位;
(4) 使用input()获得测试用例输入时,不要增加提示字符串。
程序:
TempStr = input()
if TempStr[0] in ['F']: #因为要求输入输出是大写C或者F,所以针对第一位字符做判断
C = (eval(TempStr[1:]) - 32)/1.8 #TempStr[1:]表示字符串除首字符外的所有字符。
print("C{:.2f}".format(C)) #采用{:.2f}将输出数字变成两位小数点表示时,即使数学上该输出值是整数,也会按照小数方式输出,例如,转换后温度为10度,输出为10.00;
elif TempStr[0] in ['C']:
F = 1.8*eval(TempStr[1:]) + 32
print("F{:.2f}".format(F))
else:
print() #不输入任何错误提示
我们都知道,现在通用的温度有2种,一种是 摄氏度 ,另一种是 华氏度 。
至于想要深入了解的小伙伴,给你们加上了链接:
摄氏度: 用符号 C表示,是世界上使用较为广泛的 温标 之一
网址:
华氏度: 符号 。华氏度 = 32+ 摄氏度 1.8
网址:
第一步: 先用input()输入当时的温度
第二步: 判断输入温度的类型,如果是华氏度F的话,(可以大小写)执行计算:
摄氏度=(华氏度-32)/18
这里的 TempStr[-1] 是指最后一个字符串在F/f判断是华氏度。 TempStr[0:-1] 取的是数值,用
eval() 函数,使得这些数值可以被计算出来。从而使得该公式可以计算赋值给变量C。
print("转换后的温度是{:.2f}C".format(C)), {:.2f} ,这里.2是使结果保留2位小数,f在.format(C)中展示,带上单位C。就完成打印。
第三步: 华氏度转成摄氏度
这是华氏度转化摄氏度的,下面摄氏度转化华氏度是同样的方法。
以下是完整代码:
一个程序还是包含着挺多知识的, 保留2位小数,eval(),.format(),input(), 需要细看才好好理解。欢迎观看~
python3代码如下:
把下面代码里的井号改成空格
l = []
for i in range(1, 8):
##l.append(float(input('第%d天:' % i)))
print('平均温度:', sum(l) / len(l))
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流