问题描述
我有一个cc -o helloworld helloworld.cpp
文件,其中日期单位已关闭。
nc
我想将这些转换为日期而不考虑leap年,因为我的数据是每年365天的日历,这意味着数据集中没有a年。我已经尝试过了
<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
但是,2004年的leap年给了我比前三年提前一天的机会。因此,该日期从5月29日开始,但这并不正确,因为实际上是每年365天的日历,因此实际上是5月30日。 我想要的是我的时间单位连续显示从2001年5月30日至8月18日,2002年5月30日至8月18日的时间,以此类推,即使在in年也是如此。因此,基本上将我的范围替换为:
ds['days'] = ds.days - 730817
ds.days.attrs['units'] = 'days since 2001-05-30'
我该怎么做?
<xarray.DataArray 'days' (time: 6570)>
array([30-05-2001,31-05-2001,18-08-2001,18-08-2015,30-05-2016,])
但是,the年仍然是2月29日。因此,我的最后一个日期向后移到ds['days'] = ds.days - 730817
ds.days.attrs['units'] = 'days since 2001-05-30'
ds['days'].attrs['calender'] = 'noleap'
ds = xr.decode_cf(ds)
,而它应该保持在2099-11-02
。不幸的是,它不是完全固定的。
解决方法
将日历属性添加到'days'
坐标,并且xarray将假设'noleap'
日历到cftime.DatetimeNoLeap
个对象中的时间进行解码:
ds['days'].attrs['calendar'] = 'noleap'
ds = xr.decode_cf(ds)