У меня есть несколько файлов netCDF (по одному на каждый год), которые я пытаюсь открыть с помощью xarray.open_mfdataset с указанным размером блока c. Я объединяю каждый файл по временному измерению.
Вот код, используемый для открытия набора данных:
with xr.open_mfdataset('path/to/files/*.nc',
combine = 'by_coords',
concat_dim = 'time',
data_vars = 'minimal',
chunks = {'longitude': 300,
'latitude': 300,
'time': -1},
parallel = True) as ds:
Полученный вид набора данных выглядит следующим образом:
<<xarray.Dataset>
Dimensions: (latitude: 900, longitude: 1800, time: 333094)
Coordinates:
* longitude (longitude) float64 -180.0 -179.9 -179.8 ... -0.3 -0.2 -0.1
* latitude (latitude) float32 90.0 89.9 89.8 89.7 89.6 ... 0.4 0.3 0.2 0.1
* time (time) datetime64[ns] 1981-01-01T01:00:00 ... 2019-12-31T23:00:00
Data variables:
timeOffset (latitude, longitude) int32 dask.array<chunksize=(300, 300), meta=np.ndarray>
d2m (time, latitude, longitude) float32 dask.array<chunksize=(8759, 300, 300), meta=np.ndarray>
Attributes:
Conventions: CF-1.6
history: 2020-01-31 15:47:01 GMT by grib_to_netcdf-2.16.0: /opt/ecmw...
Как видите, размер фрагмента = (8759, 300, 300), но я бы хотел, чтобы он был (333094, 300, 300), чтобы набор данных разбивался только по долготе и широте, а не по времени. . Я пробовал использовать и без {'time': -1} и {'time': None} в аргументе chunk в open_mfdataset без какого-либо хорошего результата. Похоже, что объединяемое измерение будет по крайней мере разбито на части по длине этого измерения в первом файле.
Сейчас я работаю над этим, повторно разбивая свой набор данных после открытия, но мне было интересно, был ли способ заставить его работать прямо при открытии файла?