9

我有一个以 NetCDF4 格式存储的数据集,其中包含Intensity3 个维度的值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. 替换数据集中所有相关数据数组的坐标DelayDelay_corr但是,我不知道如何执行此操作,也没有在文档中找到任何内容。

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

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

4

2 回答 2

16

您正在寻找的方法是xr.swap_dims()方法:

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

有关完整示例,请参阅xarray 文档的这一部分

于 2016-03-30T04:36:01.823 回答
2

我认为它比这简单得多。

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

ds_ = ds.copy(deep=True)

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

ds_.coords['Delay'] = ds_['Delay'] + 25
于 2016-02-26T06:44:56.773 回答