Я читаю в наборе данных Zarr изображений, подобных Landsat. Dimensions: (time: 19, x: 9952, y: 17225)
и одна переменная данных: etrf (time, y, x) float64 dask.array<chunksize=(19, 1500, 1500), meta=np.ndarray>
. Я interpolate_na
линейно удаляю nan
, а затем я делаю выборку данных на ежедневный временной интервал, используя линейную интерполяцию, которая расширяет измерение времени до 226. Использование этого окончательного набора данных всегда приводит к ошибке памяти: MemoryError: Unable to allocate array with shape (226, 2250000) and data type float64
Эта ошибка появляется, если я суммирую данные или просто выбираю один день.
Я попытался выполнить повторную чанковку, чтобы после повторной выборки фрагменты были (226, 250, 250)
, но получили ту же ошибку (другую форму). Я также попробовал каждый из планировщиков, и все они потерпели неудачу.
Мне кажется, что результат выбора одного дня для одного куска должен быть в состоянии вычисляться в памяти, поэтому я действительно не знаю что происходит не так.
Как я мог go о выполнении этой задачи?
Вот схема кода:
ds = xr.open_zarr(r'...')
ds_filled = ds.interpolate_na(dim='time', use_coordinate=True)
ds_daily = ds_filled.resample(time='1D').interpolate('linear')
data_daily.sel(time='2017-05-24').compute()