微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

xarray netcdf 保存时更改数据类型

如何解决xarray netcdf 保存时更改数据类型

当我保存 xarray 数据集时,它会在保存时(或可能在重新加载时)更改变量的数据类型。我无法生成一个最小的工作示例,因为我不知道是什么导致了这种更改(我保存的许多其他示例都运行良好)。

我的原始数据集如下所示:

OtherModel::with(['payment'=>function($query){
    $query->setEagerLoads([]);
}])->get();

然后我使用

保存它

mytest4 Out[177]: <xarray.Dataset> Dimensions: (lat: 93,lon: 87,name: 31,time: 82) Coordinates: * time (time) datetime64[ns] 2019-01-01 2020-01-01 ... 2100-01-01 * lat (lat) float32 -10.824516 -10.788528 ... -7.532379 -7.4960403 * lon (lon) float32 -79.47869 -79.44204 -79.40539 ... -76.36327 -76.32662 * name (name) <U14 'ACCESS1-0' 'ACCESS1-3' ... 'bcc-csm1-1' 'inmcm4' Data variables: pr (name,time,lat,lon) float64 nan nan nan nan ... nan nan nan nan

再次打开

 mytest4.to_netcdf(ETCCDI_folder+'test4.nc')

现在看起来像这样:

mytest5=xr.open_dataset(ETCCDI_folder+'test4.nc')

'name' 坐标以及更重要的 'pr' 变量已更改数据类型。如果我使用 ncview 直接在 ETCCDI_folder 中查看“test4”,它看起来和我期望的一样,但是一旦加载回 python 就变得无意义了。有人可以帮忙吗?

解决方法

  1. 查看xr.open_dataset()的{​​{3}},特别是decode_timesdecode_timedelta
  2. 如有必要,请在 encoding 中使用 xr.to_netcdf() dict 选项 -- 参见 all options
  3. 你的名字 var 是 unicode 而不是常规字符串有什么原因吗?我不相信 NetCDF 支持 unicode 字符串作为数据类型。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。