Спасибо @AdrianTompkins и @jhamman.После ваших комментариев я понимаю, что из-за разных периодов времени я действительно не могу получить то, что хочу, с xarray.
Моя главная цель создать такой массив - собрать в одном массиве ND все данные для разных событий,с той же продолжительностью времени.Таким образом, я могу легко получить, например, составные поля всех событий для каждого времени (час, день и т. Д.).
Я пытаюсь сделать то же самое, что и с NCL.Ниже приведен код для NCL, который работает, как и ожидалось (для меня) для тех же данных:
f = addfiles( (/"eraINTERIM_t2m_201812.nc", "eraINTERIM_t2m_201901.nc"/), "r" )
ListSetType( f, "join" )
temp = f[:]->t2m
printVarSummary( temp )
Окончательный результат - массив с 4 измерениями, новый из которых автоматически называется ncl_join .
Однако NCL не учитывает временную ось, присоединяет массивы и дает результирующей временной оси координаты первого файла.Таким образом, ось времени становится бесполезной.
Однако, как уже говорилось для @AdrianTompkins, периоды времени разные, и xarray не может присоединяться к таким данным.Итак, для создания такого массива в Python с xarray, я думаю, единственный способ - удалить временную координату из массивов.Таким образом, измерение времени будет иметь только целочисленные индексы.
Массив, заданный xarray, работает так, как @AdrianThompkins сказал в своем небольшом примере.Поскольку он сохраняет временные координаты для всех объединенных данных, я думаю, что решение xarray является правильным по сравнению с NCL.Но теперь я думаю, что вычисление композитов (получая тот же пример, приведенный выше) не будет выполнено так просто, как кажется с NCL.
В небольшом тесте я печатаю два значения из объединенного массива с помощью xarrayс
print( da_t2m[ 0, 0, 0, 0 ].values )
print( da_t2m[ 1, 0, 0, 0 ].values )
Что приводит к
252.11412
nan
Во втором случае нет данных для первого раза, как ожидалось.
ОБНОВЛЕНИЕ: все ответы помогают мне лучше понять эту проблему, поэтому мне пришлось добавить здесь обновление, чтобы также поблагодарить @kmuehlbauer за его ответ, указывающий, что его код дает ожидаемый массив.
Снова спасибовсе за помощь!
Матеус