Xarray打开NetCDF文件时时间轴无法解码出现RuntimeWarning如何解决
报错原因
numpy默认datetime64[ns](纳秒精度)的有效时间范围仅为1678年至2262年,你使用的NetCDF文件包含2262年之后的2849年数据,超出默认精度的支持范围,因此触发时间解码警告。
可行解决方案
- 方案1:关闭自动时间解码,后续手动处理
打开文件时禁用自动时间解码功能,拿到原始时间值后按需自行转换:# 关闭自动时间解码 ds = xr.open_dataset('file.nc', decode_times=False) # 后续可根据数据实际的时间单位、日历手动赋值时间坐标,年度数据示例: # time = xr.cftime_range(start='1850-01-01', periods=len(ds.time), freq='Y', calendar='standard') # ds = ds.assign_coords(time=time) - 方案2:降低时间解码精度,适配长周期范围
你的数据为年度数据,无需纳秒级时间精度,可指定时间解码采用天级精度,datetime64[D]的有效范围覆盖正负292亿年,完全适配你的数据周期:ds = xr.open_dataset('file.nc', decode_times=True, datetime_unit='D') - 方案3:使用cftime对象原生支持超范围时间
直接指定xarray将时间轴解码为cftime对象,该对象支持任意时间范围和各类非标准日历,无需调整精度,且兼容xarray绝大多数原生时间操作:
该方案适配成本最低,适合大多数使用场景。ds = xr.open_dataset('file.nc', use_cftime=True)
内容的提问来源于stack exchange,提问作者Conni
相关产品推荐
相关产品推荐

