【问题标题】:xarray netcdf changing datatype when saving保存时xarray netcdf更改数据类型
【发布时间】:2021-05-05 07:10:51
【问题描述】:

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

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

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')

现在看起来像这样:

mytest5
Out[180]:
<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) object 'ACCESS1-0' 'ACCESS1-3' ... 'bcc-csm1-1' 'inmcm4'
Data variables:
    pr       (name, time, lat, lon) timedelta64[ns] ...

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

【问题讨论】:

  • 如果许多其他人工作正常,我怀疑PR 变量中有一个或一些值是时间格式的。如果你能仔细观察,你可能会找到它。

标签: python save python-xarray


【解决方案1】:
  1. 查看all options 以获得xr.open_dataset(),尤其是decode_timesdecode_timedelta
  2. 如有必要,请使用xr.to_netcdf() 中的encoding dict 选项——参见http://xarray.pydata.org/en/stable/generated/xarray.Dataset.to_netcdf.html
  3. 您的名字 var 是 unicode 而不是常规字符串是否有原因?我不相信 NetCDF 支持将 unicode 字符串作为数据类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 2019-08-19
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 2021-02-01
    相关资源
    最近更新 更多