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/1755#issuecomment-348716669,https://api.github.com/repos/pydata/xarray/issues/1755,348716669,MDEyOklzc3VlQ29tbWVudDM0ODcxNjY2OQ==,1217238,2017-12-02T20:09:17Z,2017-12-02T20:09:17Z,MEMBER,"> How about deprecating these? Would that be too much of a change you think? (I never use them)
Yes, this is a good idea! Opened #1756 to keep track.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,278453914
https://github.com/pydata/xarray/issues/1755#issuecomment-348682403,https://api.github.com/repos/pydata/xarray/issues/1755,348682403,MDEyOklzc3VlQ29tbWVudDM0ODY4MjQwMw==,10050469,2017-12-02T10:18:28Z,2017-12-02T10:18:28Z,MEMBER,"> If I did it again, I would remove the inplace keyword argument from even Dataset methods.
How about deprecating these? Would that be too much of a change you think? (I never use them)","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,278453914
https://github.com/pydata/xarray/issues/1755#issuecomment-348682194,https://api.github.com/repos/pydata/xarray/issues/1755,348682194,MDEyOklzc3VlQ29tbWVudDM0ODY4MjE5NA==,25015426,2017-12-02T10:13:39Z,2017-12-02T10:13:39Z,CONTRIBUTOR,Thank you for your explination. I will to look into my problem from another angle.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,278453914
https://github.com/pydata/xarray/issues/1755#issuecomment-348554537,https://api.github.com/repos/pydata/xarray/issues/1755,348554537,MDEyOklzc3VlQ29tbWVudDM0ODU1NDUzNw==,1217238,2017-12-01T17:19:53Z,2017-12-01T17:19:53Z,MEMBER,"If I did it again, I would remove the `inplace` keyword argument from even Dataset methods. Almost every method in xarray creates new underlying objects, so it's misleading to call them ""inplace"". (Most of our inplace methods actually create a new object and then assign its properties to an existing object.)
Why not make your accessor method return a new DataArray object? That would be more inline with how most xarray methods work. If you have any special attributes you've set on the accessor you can copy those over to the new result.","{""total_count"": 2, ""+1"": 2, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,278453914
https://github.com/pydata/xarray/issues/1755#issuecomment-348536836,https://api.github.com/repos/pydata/xarray/issues/1755,348536836,MDEyOklzc3VlQ29tbWVudDM0ODUzNjgzNg==,25015426,2017-12-01T16:14:43Z,2017-12-01T16:14:43Z,CONTRIBUTOR,"Seems like I forgot a confusing line in my example. For example in dataarray_accessor, we have a need for in-place swap.
```python
cube = xr.DataArray(arr, dims=['ya', 'x', 'y'], coords={'y':[1,3], 'ya':[1,2,3,6], 'x':[1,2,5]}) #First dataarray object. cube now referes to this.
cube.coords['x2'] = ('x', [1,2,3])
cube = cube.swap_dims({'x':'x2'}) #Second dataarray object. cube now refers to this and first dataarray object is now forgotten
```
vs:
```python
cube = xr.DataArray(arr, dims=['ya', 'x', 'y'], coords={'y':[1,3], 'ya':[1,2,3,6], 'x':[1,2,5]}) #First dataarray object. cube now referes to this.
cube.coords['x2'] = ('x', [1,2,3])
cube.swap_dims({'x':'x2'}, inline=True) #This just changes the first dataarray object. cube still refers to the first dataarray object
```
So the question again was, is there a reason, why the inline keyword is implemented on dataset, but not on dataarray.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,278453914
https://github.com/pydata/xarray/issues/1755#issuecomment-348504868,https://api.github.com/repos/pydata/xarray/issues/1755,348504868,MDEyOklzc3VlQ29tbWVudDM0ODUwNDg2OA==,1197350,2017-12-01T14:14:25Z,2017-12-01T14:14:25Z,MEMBER,"Ah right. So you would do
```python
cube = cube.swap_dims({'x':'x2'})
```
","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,278453914
https://github.com/pydata/xarray/issues/1755#issuecomment-348492848,https://api.github.com/repos/pydata/xarray/issues/1755,348492848,MDEyOklzc3VlQ29tbWVudDM0ODQ5Mjg0OA==,25015426,2017-12-01T13:20:07Z,2017-12-01T13:20:07Z,CONTRIBUTOR,"@rabernat, please note that i'm working with dataarrays. There is no inplace keyword.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,278453914
https://github.com/pydata/xarray/issues/1755#issuecomment-348491227,https://api.github.com/repos/pydata/xarray/issues/1755,348491227,MDEyOklzc3VlQ29tbWVudDM0ODQ5MTIyNw==,1197350,2017-12-01T13:12:24Z,2017-12-01T13:12:24Z,MEMBER,"swap_dims is not an in-place operation
http://xarray.pydata.org/en/stable/generated/xarray.Dataset.swap_dims.html
It returns a new dataset with swapped dims. If you want to do it in place, there is a keyword argument for that.
Sent from my iPhone
> On Dec 1, 2017, at 7:37 AM, Leevi Annala wrote:
>
> Problem description
>
> This is a problem if I want to swap_dims in DataArray Accessor.
>
> Code Sample
>
> This is what I'm forced to do:
>
> import xarray as xr
> import numpy as np
> @xr.register_dataarray_accessor('testing')
> class TestAccessor(object):
> def __init__(self, xarray_obj):
> self._obj = xarray_obj
> def the_problem(self):
> self._obj = self._obj.swap_dims({'x':'x2'})
> print(self._obj)
>
> arr = np.random.rand(4,3,2)
> cube = xr.DataArray(arr, dims=['ya', 'x', 'y'], coords={'y':[1,3], 'ya':[1,2,3,6], 'x':[1,2,5]})
> cube.coords['x2'] = ('x', [1,2,3])
> cube.swap_dims({'x':'x2'})
> cube.testing.the_problem()
> print(cube)
> this prints:
>
>
> array([[[ 0.659583, 0.167555],
> [ 0.357974, 0.46081 ],
> [ 0.85115 , 0.845257]],
>
> [[ 0.280308, 0.777399],
> [ 0.512527, 0.542036],
> [ 0.838603, 0.799414]],
>
> [[ 0.572031, 0.350464],
> [ 0.205219, 0.812232],
> [ 0.687778, 0.984928]],
>
> [[ 0.803385, 0.63981 ],
> [ 0.089909, 0.499857],
> [ 0.25266 , 0.967909]]])
> Coordinates:
> * y (y) int32 1 3
> * ya (ya) int32 1 2 3 6
> x (x2) int32 1 2 5
> * x2 (x2) int32 1 2 3
>
> array([[[ 0.659583, 0.167555],
> [ 0.357974, 0.46081 ],
> [ 0.85115 , 0.845257]],
>
> [[ 0.280308, 0.777399],
> [ 0.512527, 0.542036],
> [ 0.838603, 0.799414]],
>
> [[ 0.572031, 0.350464],
> [ 0.205219, 0.812232],
> [ 0.687778, 0.984928]],
>
> [[ 0.803385, 0.63981 ],
> [ 0.089909, 0.499857],
> [ 0.25266 , 0.967909]]])
> Coordinates:
> * y (y) int32 1 3
> * ya (ya) int32 1 2 3 6
> * x (x) int32 1 2 5
> x2 (x) int32 1 2 3
> where the two xarrays are clearly different.
>
> I would want to do:
>
> import xarray as xr
> import numpy as np
> @xr.register_dataarray_accessor('testing')
> class TestAccessor(object):
> def __init__(self, xarray_obj):
> self._obj = xarray_obj
> def the_problem(self):
> self._obj.swap_dims({'x':'x2'}, inplace = True)
> print(self._obj)
>
> arr = np.random.rand(4,3,2)
> cube = xr.DataArray(arr, dims=['ya', 'x', 'y'], coords={'y':[1,3], 'ya':[1,2,3,6], 'x':[1,2,5]})
> cube.coords['x2'] = ('x', [1,2,3])
> cube.swap_dims({'x':'x2'})
> cube.testing.the_problem()
> print(cube)
> this would keep the two xarrays the same, as they should be:
>
>
> array([[[ 0.659583, 0.167555],
> [ 0.357974, 0.46081 ],
> [ 0.85115 , 0.845257]],
>
> [[ 0.280308, 0.777399],
> [ 0.512527, 0.542036],
> [ 0.838603, 0.799414]],
>
> [[ 0.572031, 0.350464],
> [ 0.205219, 0.812232],
> [ 0.687778, 0.984928]],
>
> [[ 0.803385, 0.63981 ],
> [ 0.089909, 0.499857],
> [ 0.25266 , 0.967909]]])
> Coordinates:
> * y (y) int32 1 3
> * ya (ya) int32 1 2 3 6
> x (x2) int32 1 2 5
> * x2 (x2) int32 1 2 3
>
> array([[[ 0.659583, 0.167555],
> [ 0.357974, 0.46081 ],
> [ 0.85115 , 0.845257]],
>
> [[ 0.280308, 0.777399],
> [ 0.512527, 0.542036],
> [ 0.838603, 0.799414]],
>
> [[ 0.572031, 0.350464],
> [ 0.205219, 0.812232],
> [ 0.687778, 0.984928]],
>
> [[ 0.803385, 0.63981 ],
> [ 0.089909, 0.499857],
> [ 0.25266 , 0.967909]]])
> Coordinates:
> * y (y) int32 1 3
> * ya (ya) int32 1 2 3 6
> x (x) int32 1 2 5
> * x2 (x) int32 1 2 3
> I have version 0.10.0, the newest on conda-forge.
>
> —
> You are receiving this because you are subscribed to this thread.
> Reply to this email directly, view it on GitHub, or mute the thread.
>
","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,278453914