У меня есть массив данных xarray, который содержит ежедневные данные за каждый день с 1970 по 2023 год с октября по март, и я хочу вычислить среднее значение переменной для каждого дня (например, среднее значение за все 1 января).
Мои данные выглядят следующим образом:
Код: Выделить всё
Size: 5GB
dask.array
Coordinates:
number int64 8B 0
pressure_level float64 8B 500.0
* latitude (latitude) float64 3kB 0.0 -0.25 -0.5 ... -79.5 -79.75 -80.0
* longitude (longitude) float64 3kB -100.0 -99.75 -99.5 ... -10.25 -10.0
* valid_time (valid_time) datetime64[ns] 80kB 1970-01-01 ... 2023-12-31
Я пробовал использовать groupby, но мне удалось сгруппировать данные только по месяцу или по дню (т. е. по всем первым числам месяца независимо от месяца), а не по тому и другому. Я могу перегруппировать каждую из этих групп, но уверен, что есть более элегантное решение. Перегруппировка групп выглядит следующим образом:
Код: Выделить всё
da.groupby('valid_time.month')[1].groupby('valid_time.day')[1]
Это привело бы к 1 января, и технически я мог бы сделать это для всех дней.
Я также попробовал что-то вроде этого поста:
Код: Выделить всё
da.groupby(da.index.strftime('%m-%d')).mean()
но я понял:
Код: Выделить всё
AttributeError: 'DataArray' object has no attribute 'index'
Желаемый результат должен иметь форму (D, широта, долгота), где D — количество дней между 1 октября и 31 марта (без всех 29 февраля, которые были удалены).