多年逐日气象数据(例如SST),格式为nc文件,求年平均、月平均、日平均、全局年平均

1 篇文章 0 订阅
1 篇文章 0 订阅

多年逐日气象数据(例如SST),格式为nc文件,求年平均、月平均、全局年平均(自己备忘)

假设有一个nc文件,里面存储的是多年的逐日气象数据,现在我需要求出每年的月平均值或者年平均值,以及所有年份得到的一个年平均值,代码如下:

import netCDF4 as nc
import xarray as xr
import numpy as np
import calendar
import warnings
warnings.filterwarnings('ignore')

"""
19年的mld日数据是一个nc文件
"""
file = r"E:\123\HBhai\2002-2020\MLD\cmems_mod_glo_phy_my_0.083_P1D-m_1689426625965.nc"
# da = xr.open_dataset(file).sel(latitude=slice(0, 42), longitude=slice(117, 180))
data = xr.open_dataset(file)
data = data.where(~np.isnan(data), drop=True)
# 计算月平均 参数time='1M'表示按月对数据进行重采样,然后使用mean方法计算每个月的平均值。
monthly_mean = data.resample(time='1M').mean(dim='time', skipna=True)    # 将skipna=True参数传递给mean方法来忽略缺失值NaN
# 将月平均数据保存为NetCDF文件
monthly_mean.to_netcdf(r'E:\123\HBhai\2002-2020\MLD\monthly_mean_data.nc')
# 计算多年的全局年平均
yearly_mean = monthly_mean.mean(dim='time', skipna=True)
yearly_mean.to_netcdf(r'E:\123\HBhai\2002-2020\MLD\year_mean_data.nc')

关键代码在于这一行:

# 计算月平均 参数time='1M'表示按月对数据进行重采样,然后使用mean方法计算每个月的平均值。
monthly_mean = data.resample(time='1M').mean(dim='time', skipna=True)

当求每年的月平均时,time=‘1M’
当求每年的年平均时,time=‘1Y’
当求多年的全局年平均时,可以直接在月平均基础上进行平均:

yearly_mean = monthly_mean.mean(dim='time', skipna=True)

也可以直接平均:

yearly_mean = data['sea_surface_temperature'].mean(dim=('time', 'latitude', 'longitude'))
  • 13
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值