Skip to content

DataArray transpose inconsistent with Dataset Ellipsis usage #4647

@ahuang11

Description

@ahuang11

This works:

import xarray as xr
ds = xr.tutorial.open_dataset('air_temperature')
ds.transpose('not_existing_dim', 'lat', 'lon', 'time', ...)

This doesn't (subset air):

import xarray as xr
ds = xr.tutorial.open_dataset('air_temperature')
ds['air'].transpose('not_existing_dim', 'lat', 'lon', 'time', ...)

The error message is a bit inaccurate too since I do have Ellipsis included; might be related to two calls of: dims = tuple(utils.infix_dims(dims, self.dims))


ValueError: ('not_existing_dim', 'lat', 'lon', 'time') must be a permuted list of ('time', 'lat', 'lon'), unless `...` is included

Traceback
...
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-5-793dfc1507ea> in <module>
      2 ds = xr.tutorial.open_dataset('air_temperature')
      3 ds.transpose('not_existing_dim', 'lat', 'lon', 'time', ...)
----> 4 ds['air'].transpose('not_existing_dim', 'lat', 'lon', 'time', ...)

~/anaconda3/envs/py3/lib/python3.7/site-packages/xarray/core/dataarray.py in transpose(self, transpose_coords, *dims)
   2035         if dims:
   2036             dims = tuple(utils.infix_dims(dims, self.dims))
-> 2037         variable = self.variable.transpose(*dims)
   2038         if transpose_coords:
   2039             coords: Dict[Hashable, Variable] = {}

~/anaconda3/envs/py3/lib/python3.7/site-packages/xarray/core/variable.py in transpose(self, *dims)
   1388         if len(dims) == 0:
   1389             dims = self.dims[::-1]
-> 1390         dims = tuple(infix_dims(dims, self.dims))
   1391         axes = self.get_axis_num(dims)
   1392         if len(dims) < 2 or dims == self.dims:

~/anaconda3/envs/py3/lib/python3.7/site-packages/xarray/core/utils.py in infix_dims(dims_supplied, dims_all)
    724         if set(dims_supplied) ^ set(dims_all):
    725             raise ValueError(
--> 726                 f"{dims_supplied} must be a permuted list of {dims_all}, unless `...` is included"
    727             )
    728         yield from dims_supplied

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions