【发布时间】:2020-11-07 22:33:45
【问题描述】:
我有一个 nc 文件,其中日单位已关闭。
<xarray.DataArray 'days' (time: 6570)>
array([730817., 730818., 730819., ..., 737384., 737385., 737386.])
Dimensions without coordinates: time
Attributes:
units: days_since_Jan11900
long_name: calendar_days
我想将这些转换为日期而不考虑闰年,因为我的数据是一年 365 天的日历,这意味着数据集中没有闰年。这个我试过了
ds['days'] = ds.days - 730817
ds.days.attrs['units'] = 'days since 2001-05-30'
但是,2004 年的闰年让我比前三年提前了一天。因此,它从 5 月 29 日开始,但这是不正确的,因为由于一年 365 天的日历,它实际上是 5 月 30 日。 我想要的是我的时间单位不断地显示从 2001 年 5 月 30 日到 8 月 18 日、2002 年 5 月 30 日到 2002 年 8 月 18 日等期间,即使在闰年也是如此。所以基本上将我的范围替换为:
<xarray.DataArray 'days' (time: 6570)>
array([30-05-2001, 31-05-2001, ..., 18-08-2001, ..., 18-08-2015, 30-05-2016, ...,])
我该怎么做?
编辑 我现在尝试包含@spencerkclark 的方法。
ds['days'] = ds.days - 730817
ds.days.attrs['units'] = 'days since 2001-05-30'
ds['days'].attrs['calender'] = 'noleap'
ds = xr.decode_cf(ds)
但是,我仍然在闰年得到 2 月 29 日。因此,我的最后一个日期向后移动到2099-11-02,而它应该保持在2099-12-31。不幸的是,所以没有完全修复。
【问题讨论】:
标签: python numpy netcdf python-xarray