2016-02-25 16 views
3

我有一個以NetCDF4格式存儲的數據集,它包含Intensity三維數值:Loop,DelayWavelength。我叫我的座標相同的尺寸(我不知道這是否是好還是壞...)xarray(Python)中的替代數據集座標

我使用xarray(前身爲X射線)在Python加載數據集:

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

現在我想操縱數據,同時跟蹤原始數據。舉例來說,我想:

  1. 應用偏移到Delay座標,並保持原有Delay DataArray中不變。這似乎與做:

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

  2. 替代座標DelayDelay_corr數據集中所有相關dataarrays。但是,我不知道如何做到這一點,我沒有找到任何文件。

有人會知道如何執行項目#2嗎?

要使用的測試數據下載NetCDF4文件: http://1drv.ms/1QHQTRy

回答

3

你正在尋找的方法是xr.swap_dims()方法:

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

見XAR的this section ray文檔的完整示例。

+1

斷開的鏈接,你有更新的嗎? – derchambers

+0

修正了它,謝謝 – shoyer

0

我認爲這是比簡單得多。

如果您不想更改現有數據,請創建副本。需要注意的是改變ds不會改變netcdf4文件,但假設你還是不想改變ds

ds_ = ds.copy(deep=True) 

然後,只需設置Delay座標爲舊

ds_.coords['Delay'] = ds_['Delay'] + 25 
的修改版本