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)