将nc文件中的数据按月份求平均值

将nc文件中的数据按月份求平均值(就是比如我们有2001~2010这10年按月存储的数据,我们分别求这10年数据1月份、2月份、…、12月份的平均值)

关于nc数据的读取之前介绍过,所以这里就跳过,假设我们已经读取好了一个径流的数据ro。
示例中用的产品为EAR5,数据范围选取的是1984~2010这27年的数据。

#分月份计算ro平均值
ro_all=[[] for i in range(12)]
ro_monthdiv=[]

#首先我们先将27年,每个月份的数据分别存储。即这12个子数组中,分别存储了27年1月份的数据、27年2月份的数据、...、27年12月份的数据
for i in range(12):
    for j in range(27):
        ro_all[i].append(ro[j*12+i])
    ro_all[i]=np.array(ro_all[i])

#然后分别求平均就好了
for i in range(12):
    ro_monthdiv.append(np.mean(ro_all[i],axis=0))
ro_monthdiv=np.array(ro_monthdiv)
#print(ro_monthdiv.shape)

这一步的目的是为了便于后续的计算。
补充一个额外的,我们可以将计算结果可视化,便于研究。
这里需要用到matplotlib库。

import matplotlib.pyplot as plt

#创建一块儿画布,两个参数分别是长和宽,figure函数的具体用法大家可以自行查阅,这里只需要这两个就够了
plt.figure(figsize=(15,12))

#这里是指定你要画的多个图的分布
#注意,subplot函数中,第三个参数表示顺序,从1开始,分别从左至右、从上至下编号
for i in range(12):
    plt.subplot(4,3,i+1)
    plt.title("Q_Month"+str(i+1))
    
#这一步是绘图,lon、lat是之前读取nc文件时读取到的经度和纬度,用来绘图时的定位
#ro_monthdiv[i]即为我们要绘制的图像
#shading有几个值,大家可以自己查询,并根据实际情况设置
#vmin与vmax为显示值的范围(最小值与最大值,大于最大值的值都视作最大值,最小值也类似)
#cmap是用来设定色带,也是有几个特定值,大家可以自行查询
#colorbar是显示图例
    plt.pcolormesh(lon,lat,ro_monthdiv[i],shading="auto",vmin=0,vmax=200,cmap='OrRd')
    colorbar=plt.colorbar()
plt.tight_layout()

最后看一下效果图:
蒸散发示意图
向大家表示歉意,我写的太啰嗦了。主要是,我在写这个程序之前,和老师交流的时候就对“按月份求平均”的这个说法产生了误解,我以为是直接对所有月份求出来一个平均结果,而实际上应该是分月份来求平均。所以我在描述的时候用了很多繁琐的举例形容。

  • 18
    点赞
  • 175
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
MATLAB是一个功能强大的数值计算和数据分析工具,可以用它来求解多年平均。对于以.nc格式存储的气象数据,我们可以利用MATLAB的一些相关函数进行处理。 首先,我们需要加载NC文件到MATLAB的工作环境。可以使用`ncread`函数来读取NC文件数据,并将其存储为一个MATLAB数组。 例如,假设NC文件包含一个名为“temperature”的变量,它记录了多年的温度数据。我们可以使用以下代码读取并存储温度数据。 ``` temperature = ncread('data.nc', 'temperature'); ``` 接下来,我们需要计算多年平均。可以使用MATLAB的`mean`函数来计算数组的平均值。对于多维数组,可以通过指定维度进行计算。 例如,假设我们的温度数据是一个3维数组,其维度1表示年份,维度2表示月份,维度3表示地点。我们可以使用以下代码计算多年平均温度。 ``` yearly_average = mean(temperature, 1); ``` 上述代码将计算出每个月份的多年平均温度,结果将存储在名为“yearly_average”的变量。 最后,我们可以对多年平均温度数据进行进一步的分析或可视化。例如,可以使用MATLAB的绘图函数将多年平均温度以折线图的形式进行展示。 ``` plot(yearly_average); ``` 此代码将以月份为横坐标,多年平均温度为纵坐标,绘制出折线图。 综上所述,通过加载和读取NC文件数据,并使用MATLAB的函数计算多年平均,我们可以对NC文件进行相应的处理和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值