首页 > 解决方案 > 使用 xarray 将 NetCDF 保存为时间维度的子集

问题描述

我有一个带有一个变量(正面)和四个维度(时间、高度、纬度和经度)的 NetCDF。从https://coastwatch.pfeg.noaa.gov/erddap/griddap/erdGAtfnt10day_LonPM180.html下载

它是一个月度复合,即 <xarray.DataArray 'time' (time: 151)> array(['2001-01-16T12:00:00.000000000', '2001-02-16T00:00:00.000000000', ... '2013-12-16T12:00:00.000000000'],dtype='datetime64[ns]')。

我想为每个时间戳创建一个文件(无论是 NetCDF 还是 Geotif 都没有关系)。

我试过了:

ds = xr.open_dataset("Front_monthly2001to2013.nc", decode_times=True)

months, datasets = zip(*ds.groupby("time.month"))  #.groupby("time.month")
paths = ["test%s.nc" % m for m in months]
xr.save_mfdataset(datasets, paths)

但随后它将所有月份分组,我得到 12 个输出文件,而不是每个年月的一个。如何按年保存(在我的情况下,与每个时间戳相同)?

提前致谢

标签: netcdfpython-xarray

解决方案


您可以使用时间维度的日期时间组件将时间戳重新格式化为年和月,并将其用于分组:

months, datasets = zip(*ds.groupby(ds.time.dt.strftime("%Y%m")))

推荐阅读