使用xarray在netCDF中输出int32时间维度

使用xarray在netCDF中输出int32时间维度,netcdf,python-xarray,xarray,Netcdf,Python Xarray,Xarray,假设我在xarray数据集中有这样的时间数据: ds = xr.Dataset({'time': pd.date_range('2000-01-01', periods=10)}) ds.to_netcdf('asdf.nc') xarray的to_netcdf()方法将时间维度输出为int64: $ ncdump -v time asdf.nc netcdf asdf { dimensions: time = 10 ; variables: int64 time(time)

假设我在xarray数据集中有这样的时间数据:

ds = xr.Dataset({'time': pd.date_range('2000-01-01', periods=10)})
ds.to_netcdf('asdf.nc')
xarray的
to_netcdf()
方法将时间维度输出为int64:

$ ncdump -v time asdf.nc
netcdf asdf {
dimensions:
    time = 10 ;
variables:
    int64 time(time) ;
        time:units = "days since 2000-01-01 00:00:00" ;
        time:calendar = "proleptic_gregorian" ;
data:

 time = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ;
}

因为我使用的是不支持int64的THREDDS服务器,所以我希望这些时间数据是int32。使用xarray可以这样做吗?

您可以通过
encoding
属性或
encoding
关键字参数指定每个输出变量的数据类型,以
转换为
。在您的示例中,这看起来很简单:

ds.to_netcdf('asdf.nc', encoding={'time': {'dtype': 'i4'}})
有关写入编码数据的更多信息,请参见xarray文档: