【问题标题】:python-xarray rename data variablepython-xarray 重命名数据变量
【发布时间】:2021-11-13 21:04:04
【问题描述】:

我创建了一个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 的函数,因此我没有指定数据变量名称。但是,我想在绘图之前重命名它。

【问题讨论】:

    标签: python-xarray


    【解决方案1】:
    DataArray.rename
    

    就是我要找的东西

    【讨论】:

    【解决方案2】:

    Dataset ds 的另一种可能性是:

        ds['new_var_name'] = ds['__xarray_dataarray_variable__']
        ds = ds.drop(['__xarray_dataarray_variable__'])
    

    【讨论】:

      【解决方案3】:

      这个文件看起来像是DataArray.to_netcdf() 在一个未命名的DataArray 上创建的。解决此问题的一种简单方法是在调用to_netcdf() 之前 在DataArray 上设置一个名称。

      否则,如果您对返回未命名的 DataArray 感到满意,请尝试使用 xarray.open_dataarray() 加载它。

      【讨论】:

        【解决方案4】:

        这样就可以了。

        data = DataArray.rename("new_name")
        data.to_netcdf()
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-04-27
          • 1970-01-01
          • 2021-04-29
          • 2018-11-22
          • 1970-01-01
          • 2012-04-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多