html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue https://github.com/pydata/xarray/issues/4501#issuecomment-708686170,https://api.github.com/repos/pydata/xarray/issues/4501,708686170,MDEyOklzc3VlQ29tbWVudDcwODY4NjE3MA==,1053153,2020-10-14T22:07:38Z,2020-10-14T22:07:38Z,CONTRIBUTOR,"My mental model of what's happening may not be correct. I did want `sel()`, `isel()`, and `squeeze()` to all operate the same way (and maybe someday even work on non-dim coordinates!). Replacing `squeeze()` with `isel()` in my initial example gives the same failure, which I would want it to work: ``` import numpy as np import xarray as xr arr1 = xr.DataArray(np.zeros((1,5)), dims=['y', 'x'], coords={'e': ('y', [10])}) arr2 = arr1.isel(y=0).expand_dims('y') xr.testing.assert_identical(arr1, arr2) ``` ``` AssertionError: Left and right DataArray objects are not identical Differing coordinates: L e (y) int64 10 R e int64 10 ``` The non-dim coordinate `e` has forgotten that it was associated with `y`. I'd prefer that this association remained. Where it gets really interesting is in the following example where the non-dim coordinate moves from one dim to another. I understand the logic here (since the `isel()` were done in a way that correlates 'y' and 'z'). In my proposal, this would not happen without explicit user intervention -- which may actually be desired here (it's sorta surprising): ``` import numpy as np import xarray as xr arr = xr.DataArray(np.zeros((2, 2, 5)), dims=['z', 'y', 'x'], coords={'e': ('y', [10, 20])}) print(arr.coords) print() arr0 = arr.isel(z=0,y=0) arr1 = arr.isel(z=1,y=1) arr_concat = xr.concat([arr0, arr1], 'z') print(arr_concat.coords) ``` ``` Coordinates: e (y) int64 10 20 Coordinates: e (z) int64 10 20 ``` ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,718716799 https://github.com/pydata/xarray/issues/4501#issuecomment-708561579,https://api.github.com/repos/pydata/xarray/issues/4501,708561579,MDEyOklzc3VlQ29tbWVudDcwODU2MTU3OQ==,1053153,2020-10-14T17:51:15Z,2020-10-14T17:51:15Z,CONTRIBUTOR,"> One problem with this -- at least for now -- is that xarray currently doesn't allow coordinates on DataArray objects to have dimensions that don't appear on the DataArray itself. Ah, then that would be the desire here. > It might also be surprising that this would make `squeeze('y')` inconsistent with `isel(y=0)` The suggestion here is that both of these would behave the same. The MCVE was just for the squeeze case, but I expect that `isel` and `sel` would both allow non-dim coords to maintain the reference to their original dim (even if it becomes a non-dim coord itself). ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,718716799 https://github.com/pydata/xarray/issues/4501#issuecomment-706640485,https://api.github.com/repos/pydata/xarray/issues/4501,706640485,MDEyOklzc3VlQ29tbWVudDcwNjY0MDQ4NQ==,1053153,2020-10-11T02:37:00Z,2020-10-11T02:37:00Z,CONTRIBUTOR,"I'm not a huge fan of adding arguments for a case that rarely comes up (I presume).  One difference in your example is that the 'e' coord is never based on 'y', so I would not want it expanded -- so I'd still like that test to pass. The case I'm interested in is where the non-dimension coords are based on existing dimension coords that gets squeezed. So in this example: ``` import numpy as np import xarray as xr arr1 = xr.DataArray(np.zeros((1,5)), dims=['y', 'x'], coords={'y': [42], 'e': ('y', [10])}) arr1.squeeze() ``` The squeezed array looks like: ``` array([0., 0., 0., 0., 0.]) Coordinates: y int64 42 e int64 10 Dimensions without coordinates: x ``` What I think would be more useful: ``` array([0., 0., 0., 0., 0.]) Coordinates: y int64 42 e (y) int64 10 <---- Note the (y) Dimensions without coordinates: x ``` ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,718716799