在 xarray 中替换数据集坐标 (Python)
Substitute dataset coordinates in xarray (Python)
我有一个以 NetCDF4 格式存储的数据集,它由具有 3 个维度的 Intensity
个值组成:Loop
、Delay
和 Wavelength
。我把我的坐标命名为和维度一样的名字(不知道好不好...)
我在 Python 中使用 xarray(以前称为 xray)来加载数据集:
import xarray as xr
ds = xr.open_dataset('test_data.netcdf4')
现在我想在跟踪原始数据的同时操作数据。例如,我会:
对 Delay
坐标应用偏移量并保持原始 Delay
数据阵列不变。这似乎是通过以下方式完成的:
ds_ = ds.assign_coords(Delay_corr=ds_.Delay.copy(deep=True) + 25)
用坐标 Delay
代替数据集中所有相关数据数组的 Delay_corr
。但是,我不知道如何执行此操作,而且我在文档中也没有找到任何内容。
有人知道如何执行第 2 项吗?
要下载带有测试数据的 NetCDF4 文件:
http://1drv.ms/1QHQTRy
我觉得比那简单多了。
如果您不想更改现有数据,请创建一个副本。请注意,更改 ds
不会更改 netcdf4 文件,但假设您仍然不想更改 ds
:
ds_ = ds.copy(deep=True)
然后将Delay
坐标设置为旧坐标的修改版本
ds_.coords['Delay'] = ds_['Delay'] + 25
您要找的方法是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。
我有一个以 NetCDF4 格式存储的数据集,它由具有 3 个维度的 Intensity
个值组成:Loop
、Delay
和 Wavelength
。我把我的坐标命名为和维度一样的名字(不知道好不好...)
我在 Python 中使用 xarray(以前称为 xray)来加载数据集:
import xarray as xr
ds = xr.open_dataset('test_data.netcdf4')
现在我想在跟踪原始数据的同时操作数据。例如,我会:
对
Delay
坐标应用偏移量并保持原始Delay
数据阵列不变。这似乎是通过以下方式完成的:ds_ = ds.assign_coords(Delay_corr=ds_.Delay.copy(deep=True) + 25)
用坐标
Delay
代替数据集中所有相关数据数组的Delay_corr
。但是,我不知道如何执行此操作,而且我在文档中也没有找到任何内容。
有人知道如何执行第 2 项吗?
要下载带有测试数据的 NetCDF4 文件: http://1drv.ms/1QHQTRy
我觉得比那简单多了。
如果您不想更改现有数据,请创建一个副本。请注意,更改 ds
不会更改 netcdf4 文件,但假设您仍然不想更改 ds
:
ds_ = ds.copy(deep=True)
然后将Delay
坐标设置为旧坐标的修改版本
ds_.coords['Delay'] = ds_['Delay'] + 25
您要找的方法是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。