Итак, у меня есть 3 файла netcdf4 (каждый примерно по 90 МБ), которые я хотел бы объединить с помощью пакета xarray. В каждом файле есть одна переменная (dis), представленная с разрешением 0,5 градуса (широта, долгота) за 365 дней (время). Моя цель - объединить три файла так, чтобы у нас был временной ряд 1095 дней (3 года).
Каждый файл (для 2007, 2008, 2009 годов) имеет: 1 переменную: dis 3 координаты: время, широту, долготу ... как таковые
<xarray.Dataset>
Dimensions: (lat: 360, lon: 720, time: 365)
Coordinates:
* lon (lon) float32 -179.75 -179.25 -178.75 -178.25 -177.75 -177.25 ...
* lat (lat) float32 89.75 89.25 88.75 88.25 87.75 87.25 86.75 86.25 ...
* time (time) datetime64[ns] 2007-01-01 2007-01-02 2007-01-03 ...
Data variables:
dis (time, lat, lon) float64 nan nan nan nan nan nan nan nan nan ...
Я импортирую их и использую модуль concat для объединения, я думаю, успешно. В этом случае модуль считывает 3 имени файла netcdf из filestrF
flist1 = [1,2,3]
ds_new = xr.concat([xr.open_dataset(filestrF[0,1,1,f]) for f in flist1],dim='time')
Теперь показаны новые сведения о новом наборе данных:
Dimensions: (lat: 360, lon: 720, time: 1095)
Мне кажется, это нормально. Однако, когда я записываю этот набор данных обратно в netcdf, размер файла увеличился, и данные за 1 год кажутся эквивалентными 700 МБ.
ds_new.to_netcdf('saved_on_disk1.nc')
- Для 2 объединенных файлов ~ 1,5 ГБ
- Для 3`` 2,2 ГБ
- Для 4`` 2,9 ГБ
Я ожидал, что 3 x 90 МБ = 270 МБ - поскольку мы масштабируем (3x) в одном измерении (времени). Переменные, dis и другие размеры lat и lon остаются неизменными по размеру.
Есть идеи, пожалуйста, для огромного высококлассного размера? Я протестировал чтение и обратную запись файлов без конкатенации, и сделал это успешно без увеличения размера.