-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Unstacking the diagonals of a sequence of matrices raises ValueError: IndexVariable objects must be 1-dimensional #6439
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
I tested your example with Xarray's main branch and it seems to work (at least there's no |
Just a tip: You don't need any stacking for that. diag = xr.DataArray(np.arange(12), dims="diag")
test.isel(dim0=diag, adj_dim0=diag) this should do the trick ;) |
I am aware that I can extract the diagonal of the arrays by using the same index for each argument of The bit that interests me is unstacking the relevant dimension, because the data in the original case comes to me with, effectively, a stacked dimension, and I would like to turn it back into an unstacked dimension because that is what I am used to using That is to say, skipping the unstacking rather defeats the purpose of what I am trying to do, unless you have suggestions for how to create a two-dimensional plot (one using something like |
@DWesl have you tried running your code with Xarray's main branch? If yes, could you confirm whether or not it yields the expected output? Thanks! |
Oh, right, you suggested that a bit ago. When I checkout Still not sure what fixed this, but since it's working, I don't care so much. I will wait for this to show up in a release. Thank you! |
What happened?
In my work, I produced a sequence of covariance matrices for a 2-D quantity. I wanted to extract the diagonal of the covariance matrices, then make that diagonal 2-D so I could plot it.
I could unstack the 2-D dimensions in the sequence of covariance matrices without issue. I figured out how to extract the diagonal of the covariance matrices. Unstacking the diagonal using the same procedure raised a
ValueError
.What did you expect to happen?
I expected the sequence of one-dimensional diagonals to unstack into a sequence of two-dimensional fields so I could plot them with pcolormesh.
I can make this happen by unstacking the two dimensions (producing a 5-D DataArray) and extracting the diagonals from that, but I don't see a reason it shouldn't work in the other order.
Minimal Complete Verifiable Example
Relevant log output
Anything else we need to know?
No response
Environment
INSTALLED VERSIONS
commit: None
python: 3.10.4 | packaged by conda-forge | (main, Mar 24 2022, 17:39:04) [GCC 10.3.0]
python-bits: 64
OS: Linux
OS-release: 3.10.0-1160.59.1.el7.x86_64
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8
LOCALE: ('en_US', 'UTF-8')
libhdf5: 1.12.1
libnetcdf: 4.8.1
xarray: 2022.3.0
pandas: 1.4.2
numpy: 1.22.3
scipy: 1.8.0
netCDF4: 1.5.8
pydap: None
h5netcdf: None
h5py: None
Nio: None
zarr: None
cftime: 1.6.0
nc_time_axis: None
PseudoNetCDF: None
rasterio: None
cfgrib: None
iris: None
bottleneck: None
dask: None
distributed: None
matplotlib: 3.5.1
cartopy: 0.20.2
seaborn: None
numbagg: None
fsspec: None
cupy: None
pint: None
sparse: None
setuptools: 61.3.1
pip: 22.0.4
conda: None
pytest: None
IPython: None
sphinx: None
The text was updated successfully, but these errors were encountered: