I did a simple test using merge as given here Error on using xarray open_mfdataset function but it fails:>>> ds = xr.open_mfdataset('ens1/*NPac*')<xarray.Dataset>Dimensions: (ensemble: 1, latitude: 66, longitude: 191, time: 1085)Coordinates: * ensemble (ensemble) int32 1 * latitude (latitude) float32 0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 ... * longitude (longitude) float32 100.0 101.0 102.0 103.0 104.0 105.0 106.0 ... * time (time) datetime64[ns] 1982-07-01 1982-07-02 1982-07-03 ...Data variables: u10m (time, latitude, longitude) float64 -1.471 -0.05933 -1.923 ...>>> ds2 = xr.open_mfdataset('ens2/*NPac*')<xarray.Dataset>Dimensions: (ensemble: 1, latitude: 66, longitude: 191, time: 1085)Coordinates: * ensemble (ensemble) int32 2 * latitude (latitude) float32 0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 ... * longitude (longitude) float32 100.0 101.0 102.0 103.0 104.0 105.0 106.0 ... * time (time) datetime64[ns] 1982-07-01 1982-07-02 1982-07-03 ...Data variables: u10m (time, latitude, longitude) float64 3.992 2.099 -0.3162 ...>>> ds3 = xr.merge([ds, ds2])Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/nethome/rxb826/local/bin/miniconda3/lib/python3.6/site-packages/xarray/core/merge.py", line 513, in merge variables, coord_names, dims = merge_core(dict_like_objects, compat, join) File "/nethome/rxb826/local/bin/miniconda3/lib/python3.6/site-packages/xarray/core/merge.py", line 432, in merge_core variables = merge_variables(expanded, priority_vars, compat=compat) File "/nethome/rxb826/local/bin/miniconda3/lib/python3.6/site-packages/xarray/core/merge.py", line 166, in merge_variables merged[name] = unique_variable(name, variables, compat) File "/nethome/rxb826/local/bin/miniconda3/lib/python3.6/site-packages/xarray/core/merge.py", line 85, in unique_variable % (name, out, var))xarray.core.merge.MergeError: conflicting values for variable 'u10m' on objects to be combined:first value: <xarray.Variable (time: 1085, latitude: 66, longitude: 191)>dask.array<shape=(1085, 66, 191), dtype=float64, chunksize=(31, 66, 191)>Attributes: long_name: 10m U component of wind units: m s**-1second value: <xarray.Variable (time: 1085, latitude: 66, longitude: 191)>dask.array<shape=(1085, 66, 191), dtype=float64, chunksize=(31, 66, 191)>Attributes: long_name: 10m U component of wind units: m s**-1我正在使用v0.10.0(感谢最近的更新!)I'm using v0.10.0 (thanks for the recent update!)推荐答案 xarray.open_mfdataset不支持2d合并.您需要做的是在第二维上使用concat:xarray.open_mfdataset does not support 2d merges. What you will need to do is use concat along the second dimension:import osimport xarray as xrens_list = []for num in range(1, 11): ens = 'ens%d' % num ens_list.append(xr.open_mfdataset(os.path.join(ens, '*NPac*')))ds = xr.concat(ens_list, dim='ensemble')这是xarray用户经常遇到的问题.但是,编写通用的ND concat例程非常困难.This is a common problem that xarray users run into. It is quite difficult, however, to write a generalized ND concat routine. 这篇关于python-xarray:二维的open_mfdataset concat的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
10-29 13:17