python-xarray 重命名数据变量
python-xarray rename data variable
我创建了一个 xarray.DataArray
并使用 xarray.DataArray.to_netcdf
保存了它。
我使用以下方法创建它:
datatmp = np.full([nens, len(modanom.coords['time'].values), len(modanom.coords['latitude'].values), len(modanom.coords['longitude'].values)], np.nan)
b = xr.DataArray(datatmp, coords=[range(1,nens + 1), modanom.coords['time'], modanom.coords['latitude'], modanom.coords['longitude']], dims=['ensemble', 'time', 'latitude', 'longitude'])
即我没有指定名称,例如:
b = xr.DataArray({'windspeed': (('ensemble', 'time', 'latitude', 'longitude'), datatmp)}, coords=[range(1,nens + 1), modanom.coords['time'], modanom.coords['latitude'], modanom.coords['longitude']], dims=['ensemble', 'time', 'latitude', 'longitude'])
我对这个文件做了一些操作并获得了均方根误差,结果 xarray.Dataset
是
<xarray.DataArray (latitude: 81, longitude: 131, time: 1)>
array([[[ nan],
[ nan],
...,
[ nan],
[ nan]],
[[ nan],
[ nan],
...,
[ nan],
[ nan]],
...,
[[ nan],
[ 0.843295],
...,
[ 0.794338],
[ nan]],
[[ nan],
[ nan],
...,
[ nan],
[ nan]]])
Coordinates:
* latitude (latitude) float64 0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 ...
* longitude (longitude) float64 260.0 261.0 262.0 263.0 264.0 265.0 266.0 ..
* time (time) datetime64[ns] 1983-01-15T12:00:00
读取 netCDF 文件时,我有一个 xarray.Dataset
看起来像:
<xarray.Dataset>
Dimensions: (latitude: 81, longitude: 131, time: 1)
Coordinates:
* latitude (latitude) float64 0.0 1.0 2.0 3.0 4.0 ...
* longitude (longitude) float64 260.0 261.0 262.0 ...
* time (time) datetime64[ns] 1983-01-15T12:00:00
Data variables:
__xarray_dataarray_variable__ (latitude, longitude, time) float64 nan ...
Attributes:
_NCProperties: version=1|netcdflibversion=4.4.1|hdf5libversion=1.8.18
我可以重命名 __xarray_dataarray_variable__
吗?
我问的原因是因为我有创建 xarray.Dataset
的函数,因此我没有指定数据变量名称。但是,我想在绘图之前重命名它。
此文件看起来像是 DataArray.to_netcdf()
在未命名的 DataArray 上创建的文件。解决此问题的一个简单方法是在 调用 to_netcdf()
.
之前在 DataArray 上设置一个名称
否则,如果您乐于取回未命名的 DataArray,请尝试使用 xarray.open_dataarray()
加载它。
DataArray.rename
正是我要找的东西
数据集 ds 的另一种可能性是:
ds['new_var_name'] = ds['__xarray_dataarray_variable__']
ds = ds.drop(['__xarray_dataarray_variable__'])
这样就可以了。
data = DataArray.rename("new_name")
data.to_netcdf()
我创建了一个 xarray.DataArray
并使用 xarray.DataArray.to_netcdf
保存了它。
我使用以下方法创建它:
datatmp = np.full([nens, len(modanom.coords['time'].values), len(modanom.coords['latitude'].values), len(modanom.coords['longitude'].values)], np.nan)
b = xr.DataArray(datatmp, coords=[range(1,nens + 1), modanom.coords['time'], modanom.coords['latitude'], modanom.coords['longitude']], dims=['ensemble', 'time', 'latitude', 'longitude'])
即我没有指定名称,例如:
b = xr.DataArray({'windspeed': (('ensemble', 'time', 'latitude', 'longitude'), datatmp)}, coords=[range(1,nens + 1), modanom.coords['time'], modanom.coords['latitude'], modanom.coords['longitude']], dims=['ensemble', 'time', 'latitude', 'longitude'])
我对这个文件做了一些操作并获得了均方根误差,结果 xarray.Dataset
是
<xarray.DataArray (latitude: 81, longitude: 131, time: 1)>
array([[[ nan],
[ nan],
...,
[ nan],
[ nan]],
[[ nan],
[ nan],
...,
[ nan],
[ nan]],
...,
[[ nan],
[ 0.843295],
...,
[ 0.794338],
[ nan]],
[[ nan],
[ nan],
...,
[ nan],
[ nan]]])
Coordinates:
* latitude (latitude) float64 0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 ...
* longitude (longitude) float64 260.0 261.0 262.0 263.0 264.0 265.0 266.0 ..
* time (time) datetime64[ns] 1983-01-15T12:00:00
读取 netCDF 文件时,我有一个 xarray.Dataset
看起来像:
<xarray.Dataset>
Dimensions: (latitude: 81, longitude: 131, time: 1)
Coordinates:
* latitude (latitude) float64 0.0 1.0 2.0 3.0 4.0 ...
* longitude (longitude) float64 260.0 261.0 262.0 ...
* time (time) datetime64[ns] 1983-01-15T12:00:00
Data variables:
__xarray_dataarray_variable__ (latitude, longitude, time) float64 nan ...
Attributes:
_NCProperties: version=1|netcdflibversion=4.4.1|hdf5libversion=1.8.18
我可以重命名 __xarray_dataarray_variable__
吗?
我问的原因是因为我有创建 xarray.Dataset
的函数,因此我没有指定数据变量名称。但是,我想在绘图之前重命名它。
此文件看起来像是 DataArray.to_netcdf()
在未命名的 DataArray 上创建的文件。解决此问题的一个简单方法是在 调用 to_netcdf()
.
否则,如果您乐于取回未命名的 DataArray,请尝试使用 xarray.open_dataarray()
加载它。
DataArray.rename
正是我要找的东西
数据集 ds 的另一种可能性是:
ds['new_var_name'] = ds['__xarray_dataarray_variable__']
ds = ds.drop(['__xarray_dataarray_variable__'])
这样就可以了。
data = DataArray.rename("new_name")
data.to_netcdf()