【问题标题】:Substitute dataset coordinates in xarray (Python)在 xarray (Python) 中替换数据集坐标
【发布时间】:2016-06-08 14:59:36
【问题描述】:

我有一个以 NetCDF4 格式存储的数据集,它由具有 3 个维度的 Intensity 值组成:LoopDelayWavelength。我将我的坐标命名为与维度相同(我不知道它是好是坏......)

我在 Python 中使用 xarray(以前称为 xray)来加载数据集:

import xarray as xr
ds = xr.open_dataset('test_data.netcdf4')

现在我想在跟踪原始数据的同时操作数据。例如,我会:

  1. Delay 坐标应用偏移并保持原始Delay 数据数组不变。这似乎是通过:

    ds_ = ds.assign_coords(Delay_corr=ds_.Delay.copy(deep=True) + 25)

  2. 用坐标Delay 替换数据集中所有相关数据数组的Delay_corr。但是,我不知道如何执行此操作,也没有在文档中找到任何内容。

有人知道如何执行第 2 项吗?

下载带有测试数据的 NetCDF4 文件: http://1drv.ms/1QHQTRy

【问题讨论】:

    标签: python python-xarray


    【解决方案1】:

    我认为它比那简单得多。

    如果您不想更改现有数据,请创建一个副本。请注意,更改ds 不会更改netcdf4 文件,但假设您仍然不想更改ds

    ds_ = ds.copy(deep=True)
    

    然后只需将Delay 坐标设置为旧坐标的修改版本

    ds_.coords['Delay'] = ds_['Delay'] + 25
    

    【讨论】:

      【解决方案2】:

      您要查找的方法是xr.swap_dims() 方法:

      ds.coords['Delay_corr'] = ds.Delay + 25  # could also use assign_coords
      ds2 = ds.swap_dims({'Delay': 'Delay_corr'})
      

      有关完整示例,请参阅 xarray 文档的 this section

      【讨论】:

      • 这会交换尺寸,但不会正确更新坐标
      猜你喜欢
      • 2018-12-24
      • 1970-01-01
      • 2018-10-11
      • 2020-07-09
      • 2021-12-17
      • 1970-01-01
      • 2018-01-10
      • 2020-10-08
      • 2017-03-28
      相关资源
      最近更新 更多