如何解决如何将float数组转换为365日历白天? 不包括leap年
我有一个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'
我该怎么做?
编辑 我现在尝试包括@spencerkclark的方法。
<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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。