赞
踩
假设有一个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'))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。