You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
>>>da=xr.DataArray([0., 1., 2.])
>>>db=da.stack(z=da.dims)
>>>db<xarray.DataArray (z: 3)>array([0., 1., 2.])
Coordinates:
*z (z) int64012>>>db.unstack('z')
Traceback (mostrecentcalllast):
File"<ipython-input-127-ec66ebede9c5>", line1, in<module>db.unstack('z')
File"/usr/lib64/python3.6/site-packages/xarray/core/dataarray.py", line1248, inunstackds=self._to_temp_dataset().unstack(dim)
File"/usr/lib64/python3.6/site-packages/xarray/core/dataset.py", line2315, inunstackraiseValueError('cannot unstack a dimension that does not have 'ValueError: cannotunstackadimensionthatdoesnothaveaMultiIndex
Problem description
stack is not consistently creating a MultiIndex, but just renames a dimension in case there is just the single dimension to be stacked. This breaks code where the (number of) dimensions are (is) not known in advance.
Expected Output
stack should create a MultiIndex in all cases and a stack/unstack sequence should always return the original DataArray.
Output of xr.show_versions()
commit: None
python: 3.6.5.final.0
python-bits: 64
OS: Linux
OS-release: 4.19.23-gentoo
machine: x86_64
processor: Intel(R) Core(TM) i7-2620M CPU @ 2.70GHz
byteorder: little
LC_ALL: None
LANG: nl_BE.UTF-8
LOCALE: nl_BE.UTF-8
Yes. My example and explanation are a bit clearer, so I do not know which would be best to close.
In any case, I hope this is considered for fixing separately from some big refactoring of the MultiIndex machinery, which seems to have stalled. This seems like a corner case that might not be too big, but I may be mistaken.
Code Sample
Problem description
stack
is not consistently creating aMultiIndex
, but just renames a dimension in case there is just the single dimension to be stacked. This breaks code where the (number of) dimensions are (is) not known in advance.Expected Output
stack
should create aMultiIndex
in all cases and astack
/unstack
sequence should always return the originalDataArray
.Output of
xr.show_versions()
commit: None
python: 3.6.5.final.0
python-bits: 64
OS: Linux
OS-release: 4.19.23-gentoo
machine: x86_64
processor: Intel(R) Core(TM) i7-2620M CPU @ 2.70GHz
byteorder: little
LC_ALL: None
LANG: nl_BE.UTF-8
LOCALE: nl_BE.UTF-8
xarray: 0.10.8
pandas: 0.19.1
numpy: 1.14.5
scipy: 0.19.1
netCDF4: 1.3.1
h5netcdf: None
h5py: 2.9.0
Nio: None
zarr: None
bottleneck: 1.2.1
cyordereddict: None
dask: None
distributed: None
matplotlib: 2.2.2
cartopy: None
seaborn: None
setuptools: 40.6.3
pip: 9.0.1
conda: None
pytest: 3.10.1
IPython: 5.4.1
sphinx: 1.7.5
The text was updated successfully, but these errors were encountered: