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/3731#issuecomment-1234643971,https://api.github.com/repos/pydata/xarray/issues/3731,1234643971,IC_kwDOAMm_X85JlywD,3698640,2022-09-01T18:36:30Z,2022-09-01T18:36:30Z,CONTRIBUTOR,"FWIW I could definitely see use cases for allowing something like this... I have used cumbersome/ugly workarounds to work with variance-covariance matrices etc. So I'm not weighing in on the ""this should raise an error"" debate. I got briefly excited when I saw it *didn't* raise an error, until everything started unraveling 🙃 ","{""total_count"": 2, ""+1"": 1, ""-1"": 0, ""laugh"": 1, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,557257598 https://github.com/pydata/xarray/issues/3731#issuecomment-1234639080,https://api.github.com/repos/pydata/xarray/issues/3731,1234639080,IC_kwDOAMm_X85Jlxjo,3698640,2022-09-01T18:31:08Z,2022-09-01T18:31:08Z,CONTRIBUTOR,"ooh this is a fun one! came across this issue when we stumbled across a pendantic case writing tests (H/T @brews). I expected this to ""fail loudly in the constructor"" but it doesn't. note that currently AFAICT you cannot use positional slicing to achieve an intuitive result - the behavior seems more undefined/unpredictable ```python # setup import xarray as xr, pandas as pd, numpy as np da = xr.DataArray(np.arange(8).reshape(2, 2, 2), coords=[[0, 1], [0, 1], ['a', 'b']], dims=[""ni"", ""ni"", ""shh""]) ``` xarray seems to not know it has a problem: ```python In [4]: da Out[4]: array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]]) Coordinates: * ni (ni) int64 0 1 * shh (shh) array([0, 1]) Coordinates: ni int64 0 * shh (shh) array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]]) Coordinates: * ni (ni) int64 0 1 * shh (shh) array([0, 1]) Coordinates: ni int64 0 * shh (shh) da.isel(dim='ambiguous_dim') The selection is over all dimensions of that name. > `da.mean(dim='ambiguous_dim')` The command is to reduce over dimensions of that name, the reduction should be performed over all dimensions with that name.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,557257598 https://github.com/pydata/xarray/issues/3731#issuecomment-580662115,https://api.github.com/repos/pydata/xarray/issues/3731,580662115,MDEyOklzc3VlQ29tbWVudDU4MDY2MjExNQ==,35968931,2020-01-31T09:45:52Z,2020-01-31T09:46:44Z,MEMBER,"> Why not allow multiple dimensions with the same name? They can be disambiguated with positional indexing for when it matters. I'm not sure it's that simple... What would you suggest the behaviour for `da.isel(dim='ambiguous_dim')` or `da.mean(dim='ambiguous_dim')` be?","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,557257598 https://github.com/pydata/xarray/issues/3731#issuecomment-580534808,https://api.github.com/repos/pydata/xarray/issues/3731,580534808,MDEyOklzc3VlQ29tbWVudDU4MDUzNDgwOA==,8238804,2020-01-31T01:07:28Z,2020-01-31T01:07:52Z,NONE,"Why not allow multiple dimensions with the same name? They can be disambiguated with positional indexing for when it matters. I think support for this would be useful for pairwise measures. Here's a fun example/ current buggy behaviour: ```python import numpy as np import xarray as xr from string import ascii_letters idx1 = xr.IndexVariable(""dim1"", [f""dim1-{i}"" for i in ascii_letters[:10]]) idx2 = xr.IndexVariable(""dim2"", [f""dim2-{i}"" for i in ascii_letters[:5]]) da1 = xr.DataArray(np.random.random_sample((10, 5)), coords=(idx1, idx2)) da2 = xr.DataArray(np.random.random_sample((5, 10)), coords=(idx2, idx1)) da1 @ da2 # # array(13.06261098) ```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,557257598 https://github.com/pydata/xarray/issues/3731#issuecomment-580308274,https://api.github.com/repos/pydata/xarray/issues/3731,580308274,MDEyOklzc3VlQ29tbWVudDU4MDMwODI3NA==,2448579,2020-01-30T15:31:12Z,2020-01-30T15:31:12Z,MEMBER,Dupe of #2226 and #1499 . I agree with failing loudly in the constructor,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,557257598 https://github.com/pydata/xarray/issues/3731#issuecomment-580289880,https://api.github.com/repos/pydata/xarray/issues/3731,580289880,MDEyOklzc3VlQ29tbWVudDU4MDI4OTg4MA==,35968931,2020-01-30T14:52:27Z,2020-01-30T14:52:27Z,MEMBER,"Thanks for this @ivirshup , I'm surprised at this too. The problem seems to be that the DataArray you've managed to create breaks xarray's own data model! There should be one dim for each axis of the wrapped array, but ```python import xarray as xr import numpy as np sample_idx = xr.IndexVariable(""sample_id"", [""a"", ""b"", ""c""]) da = xr.DataArray(np.eye(3), coords=(sample_idx, sample_idx) print(da) ``` gives a dataarray object which somehow has only one dim while wrapping a 2D array! ``` array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]) Coordinates: * sample_id (sample_id) array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]) Coordinates: * dim0 (dim0) array([0., 1., 0.]) Coordinates: * dim0 (dim0)