繁体   English   中英

xarray:2D属性由to_netcdf转换为1D

[英]xarray: 2D attribute converted to 1D by to_netcdf

我正在尝试将具有2D数组的数据集保存为属性,例如:

attrs = {'objects': np.array([(46.5, -42.5),(4.5, 44),(-69, -69),(-66.5, 73.5)])}
ds = xr.Dataset(data_vars, coords, attrs)
ds.to_netcdf('dataset.nc', engine='netcdf4', format='netCDF4')

但是加载文件备份显示该属性已更改为一维数组:

data = xr.open_dataset('dataset.nc')
print(data.objects)

# array([ 46.5, -42.5,   4.5,  44. , -69. , -69. , -66.5,  73.5])

这可能是什么原因? 我试图简单地传递一个元组列表,但是结果是一样的。

NetCDF文件格式不支持多维属性 如果要使用xarray将多维数组存储到netCDF文件中,则应将它们放在data_varscoords

但是显然,netCDF-Python库会将它们愉快地写为矢量,而无声地丢弃形状信息。 在这些情况下,Xarray或NetCDF4-Python确实应该引发错误。

如果确实需要,可以使用当前版本的h5netcdf,通过在xarray中指定engine='h5netcdf'来读取和写入多维属性。 但是请注意,这将创建大多数工具都无法读取的非标准netCDF文件,并且我正在考虑将来从h5netcdf中删除此功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM