У меня есть массивы данных (361x361) за январь, февраль, март, апрель, октябрь, ноябрь и де c за определенный год.
До сих пор я хранил их в отдельных файлах netcdf для каждый месяц в году (например, 03.n c, 10.n c)
Я хотел бы объединить все месяцы в один netcdf, чтобы я мог сделать что-то вроде:
march_data = data.sel(month='03')
или, альтернативно, data.sel(month=3))
До сих пор мне удавалось складывать месячные данные только в массив 361x361x7, и он бесполезно индексируется, так что для получения данных за март вам нужны данные [ :,:, 2] и получить октябрьские данные [:,:, 4]. Очевидно, что 2 и 4 не соответствуют интуитивно мартовским и октябрьским месяцам. Это отчасти потому, что python проиндексирован с нуля, а отчасти потому, что я пропускаю летние месяцы. Я мог бы добавить поля nan в течение пропущенных месяцев, но это не решило бы проблему индекса 0.
Моя попытка до сих пор:
data = xarray.Dataset( data_vars={'ice_type':(['x','y','time'],year_array),},
coords={'lon':(['x','y'],lon_target),
'lat':(['x','y'],lat_target),
'month_number':(['time'],month_int)})
Здесь year_array
- 361x361x7 numpy массив, а month_int
- список, который отображает третий индекс year_array
на номер месяца: [1,2,3,4,10,11,12]
.
Когда я пытаюсь получить данные октября с помощью oct = data.sel(month_number=10)
, он выдает ошибка.
Кстати, я знаю, что здесь возможно найти решение , но, честно говоря, я не понимаю, как оно работает. Моя путаница в основном основана на том, как они используют «время» как в качестве словарного ключа, так и списка времени одновременно.