-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
xr.DataSet.expand_dims axis option doesn't work #7456
Comments
@cmdupuis3 dimensions are not given in a particular order in the Dataset. There could be two DataArray's which have reversed dimensions for instance. You would need to inspect the DataArray's: da = xr.DataArray([[1,2,3],[4,5,6],[7,8,9]], coords={'a':[1,2,3], 'b':[1,2,3]})
ds = xr.Dataset({'da':da})
ds0 = ds.expand_dims('yomama', axis=0)
print(ds0.dims)
print(ds0.da.dims)
ds1 = ds.expand_dims('yomama', axis=1)
print(ds1.dims)
print(ds1.da.dims)
ds2 = ds.expand_dims('yomama', axis=2)
print(ds2.dims)
print(ds2.da.dims) Frozen({'a': 3, 'b': 3, 'yomama': 1})
('yomama', 'a', 'b')
Frozen({'a': 3, 'b': 3, 'yomama': 1})
('a', 'yomama', 'b')
Frozen({'a': 3, 'b': 3, 'yomama': 1})
('a', 'b', 'yomama') |
I wonder if we shouldn't recommend using |
I think it might be enough to describe this thoroughly with examples in the docstring., though I do like the solution of recommending |
I mean that's fine, but in that case, the documentation is very misleading |
Updating the docstring would be a fairly easy and impactful PR if you're up for it! |
Yeah, I could put something together. It'll probably have to wait until next week though. |
EDIT: Lots of confusion below about nothing, plz disregard Okay, regardless of expected behavior here, my particular use-case requires that I transpose these dimensions. Can someone show me a way to do this? I tried to explain the xarray point of view to Keras, but Keras is really not interested ;) I tried something like |
The transpose method should change the dimension order on each array in the dataset. One particularly important component from Kai's comment above is that
|
Nvm, my use case isn't what I thought it was, but I'll push the issue a bit. So I'm not disputing anything about what these functions actually do now, the issue I have is that the functions here treat the dimension order of a DataSet as if it's arbitrary, but calling |
I'm not an xarray developer, but my guess is that your argument is why positional indexing/slicing is not available for datasets. As for the specific case of using
38.1 µs ± 76 ns per loop (mean ± std. dev. of 4 runs, 10,000 loops each)
172 µs ± 612 ns per loop (mean ± std. dev. of 4 runs, 10,000 loops each) |
Okay I think I get the philosophy now. However, indexing a DataSet with an integer actually does work. If performance is the goal, shouldn't something like |
Can you share your code for this? I would interpret that as meaning you have a variable in your dataset mapped to an integer key, which is allowed as a hashable type but can cause problems with downstream packages. |
I was thinking something like this:
...but this throws an error (like it should). I think I must be reading my code wrong lol |
This comment was marked as off-topic.
This comment was marked as off-topic.
Closing this now. Feel free to reopen. |
What happened?
When I try to change the position of a new dimension added with
expand_dims
by setting theaxis
option, nothing happens.What did you expect to happen?
I would expect this option to add new dimensions in the position I selected, as the documentation describes. I would expect setting
axis=0
to give a result like this:Frozen({'yomama': 1, 'a': 3, 'b': 3})
Minimal Complete Verifiable Example
MVCE confirmation
Relevant log output
Anything else we need to know?
No response
Environment
xarray: 2022.10.0
pandas: 1.5.0
numpy: 1.23.3
scipy: 1.9.1
netCDF4: 1.6.1
pydap: installed
h5netcdf: 1.0.2
h5py: 3.7.0
Nio: None
zarr: 2.13.3
cftime: 1.6.2
nc_time_axis: 1.4.1
PseudoNetCDF: None
rasterio: 1.3.2
cfgrib: 0.9.10.2
iris: None
bottleneck: 1.3.5
dask: 2022.10.0
distributed: 2022.10.0
matplotlib: 3.6.1
cartopy: 0.21.0
seaborn: 0.12.0
numbagg: None
fsspec: 2022.8.2
cupy: None
pint: 0.19.2
sparse: 0.13.0
flox: 0.6.0
numpy_groupies: 0.9.19
setuptools: 65.5.0
pip: 22.3
conda: None
pytest: 7.1.3
IPython: 8.5.0
sphinx: None
The text was updated successfully, but these errors were encountered: