Заменить координаты набора данных в xarray (Python)

У меня есть набор данных, хранящийся в формате NetCDF4, который состоит из Intensity значения с 3 измерениями: Loop, Delay а также Wavelength, Я назвал мои координаты такими же, как размеры (я не знаю, хорошо это или плохо...)

Я использую xarray (ранее xray) в 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. Подставить координаты 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
Другие вопросы по тегам