Заменить координаты набора данных в xarray (Python)
У меня есть набор данных, хранящийся в формате NetCDF4, который состоит из Intensity
значения с 3 измерениями: Loop
, Delay
а также Wavelength
, Я назвал мои координаты такими же, как размеры (я не знаю, хорошо это или плохо...)
Я использую xarray (ранее xray) в Python для загрузки набора данных:
import xarray as xr
ds = xr.open_dataset('test_data.netcdf4')
Теперь я хочу манипулировать данными, отслеживая исходные данные. Например, я бы:
Применить смещение к
Delay
координаты и сохранить оригиналDelay
Dataarray нетронутым. Это, кажется, сделано с:ds_ = ds.assign_coords(Delay_corr=ds_.Delay.copy(deep=True) + 25)
Подставить координаты
Delay
заDelay_corr
для всех соответствующих массивов данных в наборе данных. Однако я понятия не имею, как это сделать, и я ничего не нашел в документации.
Кто-нибудь знает, как выполнить пункт № 2?
Чтобы загрузить файл NetCDF4 с тестовыми данными: http://1drv.ms/1QHQTRy
2 ответа
Метод, который вы ищете, это xr.swap_dims()
метод:
ds.coords['Delay_corr'] = ds.Delay + 25 # could also use assign_coords
ds2 = ds.swap_dims({'Delay': 'Delay_corr'})
Посмотрите этот раздел документации xarray для полного примера.
Я думаю, что это намного проще, чем это.
Если вы не хотите изменять существующие данные, вы создаете копию. Обратите внимание, что изменение ds
не изменит файл netcdf4, но при условии, что вы все еще не хотите менять ds
:
ds_ = ds.copy(deep=True)
Затем просто установите Delay
Координат как модифицированная версия старой
ds_.coords['Delay'] = ds_['Delay'] + 25