MeteoInfo的个人博客分享 http://blog.sciencenet.cn/u/MeteoInfo

博文

计算水平格点数据的纬向平均偏差

已有 8090 次阅读 2017-6-15 23:33 |个人分类:MeteoInfo|系统分类:科研笔记

这个例子演示如何计算水平格点数据的纬向平均偏差,参考了NCL网站上的例子:http://www.ncl.ucar.edu/Applications/dev.shtml 。mean函数可以做不同维的平均。程序中ts是水平二维数组(经纬度格点场,64*128),zm = mean(ts, axis=1) 获得纬向平均一维数组(64),ts和zm的维数不同,直接相减必须符合数组的broadcasting规则,也就是从后往前,两个数组的维相同或者其中一个为1。显然目前是不符合的,可以对zm reshape,获得二维数组(64*1),这样ts和zm数组就符合broadcasting规则了,可以直接相减。也可以用broadcast_to函数将zm扩展为和ts一样的shape,然后再相减。

关于数组broadcasting的内容可以参考这里:https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html


fn = 'D:/Temp/nc/83.nc'

f = addfile(fn)

ts = f['TS'][0,:,:]


#calculate deviation from zonal mean

zm = mean(ts, axis=1)

zm = zm.reshape(len(zm), 1)

#zm = broadcast_to(zm, (ts.shape[0], ts.shape[1]))

nts = ts - zm


#Plot

lworld = shaperead('D:/temp/map/country1.shp')

subplot(2,1,1)

axesm(newaxes=False)

geoshow(lworld, edgecolor='b')

levs = arange(240, 301, 5)

layer = contourm(ts, levs, color='k')

clabel(layer)

title('Origin data')


subplot(2,1,2)

axesm(newaxes=False)

geoshow(lworld.clone(), edecolor='k')

levs = arange(-35, 36, 5)

layer = contourfm(nts, levs, edgecolor='gray')

colorbar(layer)

title('Deviation from zonal average')






https://blog.sciencenet.cn/blog-611158-1061018.html

上一篇:合成Himawari 8 真彩色图
下一篇:读取BUFR数据
收藏 IP: 36.102.227.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-9-27 07:35

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部