繁体   English   中英

将数据集保存为 .netCDF 并将属性保存在 Python (xarray)

[英]save dataset as netCDF and also save attributes in Python (xarray)

我生成了新数据并首先保存为数据集 (.to_dataset)。

U_reg = U_reg.to_dataset(name = 'U')
V_reg = V_reg.to_dataset(name = 'V')
T_reg = T_reg.to_dataset(name = 'T')

然后我为每个变量创建了属性

U_reg.attrs['long_name'] = 'eastward_wind'
V_reg.attrs['long_name'] = 'northward_wind'
T_reg.attrs['long_name'] = 'Air Temperature'

然后将数据合并为:

new_data= xr.merge([U_reg,V_reg,T_reg]) 

最后另存为.netCDF:

new_data.to_netCDF('new_data.netcdf')

然而,当我打开并查看每个变量时,属性不可用。

有没有其他方法可以分配新属性并让它们生成 new.netCDF?

提前致谢。

在您的示例中,您将long_name属性添加到数据集属性,而不是单个 arrays 的属性。如果在转换为数据集(或直接转换为数据集变量)之前添加属性,您应该得到预期的 output :

U_reg = xr.DataArray(np.random.random((5, 6, 7)), dims=("lon", "lat", "time"))
V_reg = xr.DataArray(np.random.random((5, 6, 7)), dims=("lon", "lat", "time"))
T_reg = xr.DataArray(np.random.random((5, 6, 7)), dims=("lon", "lat", "time"))

U_reg.attrs['long_name'] = 'eastward_wind'
V_reg.attrs['long_name'] = 'northward_wind'
T_reg.attrs['long_name'] = 'Air Temperature'

ds = xr.Dataset({
    "U": U_reg,
    "V": V_reg,
    "T": T_reg
})

ds.info()
xarray.Dataset {
dimensions:
    lon = 5 ;
    lat = 6 ;
    time = 7 ;

variables:
    float64 U(lon, lat, time) ;
        U:long_name = eastward_wind ;
    float64 V(lon, lat, time) ;
        V:long_name = northward_wind ;
    float64 T(lon, lat, time) ;
        T:long_name = Air Temperature ;

// global attributes:

暂无
暂无

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

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