У меня есть массив данных 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 февраля).