xarray netcdf在保存时更改数据类型

2024-05-03 13:14:30 发布

您现在位置:Python中文网/ 问答频道 /正文

当我保存一个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_文件夹中查看“test4”,它看起来就像我期望的那样,但一旦加载回python,它就变得毫无意义了。有人能帮忙吗


Tags: name示例timeprnan数据类型xarraylon
1条回答
网友
1楼 · 发布于 2024-05-03 13:14:30
  1. 查看{a1}中的{},特别是{}和{}
  2. 如有必要,请使用xr.to_netcdf()中的encodingdict选项参见http://xarray.pydata.org/en/stable/generated/xarray.Dataset.to_netcdf.html
  3. 您的名称var是unicode而不是常规字符串,这有什么原因吗?我认为NetCDF不支持unicode字符串作为数据类型

相关问题 更多 >