将来,您可以通过使用cftime对象创建日期轴来实现此目的,但是当前有一个
outstanding issue in xarray,它不允许您编写包含此类对象的netCDF文件.
但是,即使您可以保存此类对象,最简单,最干净的方法仍然是将该轴手动定义为具有某些单位的整数数组.
import numpy as np
import xarray as xr
days = np.asarray(range(100*365))
ds = xr.Dataset(
{'time': (['time'], days, {'units': 'days since 2200-01-01 0:0:0'})}
)
print(ds['time'][-1]
ds.to_netcdf('test.nc')
ds = xr.open_dataset('test.nc')
print(ds['time'][-1])
给出输出
array(36499)
Coordinates:
time int64 36499
Attributes:
units: days since 2200-01-01 0:0:0
其次是
array(datetime.datetime(2299, 12, 7, 0, 0), dtype=object)
Coordinates:
time object 2299-12-07
请注意,当您重新打开数据集时,xarray会自动对其进行解码.
您使用的“单位”属性应遵循CF conventions的时间坐标.您可以根据需要将“天”替