id,node_id,number,title,user,state,locked,assignee,milestone,comments,created_at,updated_at,closed_at,author_association,active_lock_reason,draft,pull_request,body,reactions,performed_via_github_app,state_reason,repo,type 419543087,MDU6SXNzdWU0MTk1NDMwODc=,2805,[Feature Request] iteration equivalent numpy's nditer or ndenumerate,23265127,open,0,,,4,2019-03-11T15:48:00Z,2022-09-22T16:12:47Z,,NONE,,,,"Hi folks, is there any simple way to iterate over all elements of an xarray together with its labels? What I am looking for is an equivalent to numpy's `nditer` or rather `ndenumerate` method: https://docs.scipy.org/doc/numpy/reference/generated/numpy.nditer.html https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndenumerate.html Ideally, the iterator should return both the current data element and its coordinates, potentially in the form of an (ordered) dictionary. Is there any direct possibility to achieve this with the current functionality of the package? ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/2805/reactions"", ""total_count"": 3, ""+1"": 3, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,issue 454677926,MDU6SXNzdWU0NTQ2Nzc5MjY=,3015,Assigning values to a subset of a dataset,23265127,closed,0,,,2,2019-06-11T13:03:16Z,2021-05-25T08:12:52Z,2021-05-25T08:12:52Z,NONE,,,,"Hi, can somebody tell me what is the ""correct"" way to manipulate a subset of the data contained in a Dataset? Consider the following example: ``` import numpy as np import xarray as xr shape = (3, 2) da1 = xr.DataArray(np.zeros(shape), dims=('x', 'y'), coords=dict(x=[1, 2, 3], y=[4, 5]), name='var1') da2 = xr.DataArray(np.zeros(shape), dims=('x', 'y'), coords=dict(x=[1, 2, 3], y=[4, 5]), name='var2') ``` I can easily change the value of variable 1 at a given coordinate in the first DataArray using the following syntax: ``` da1.loc[dict(x=1, y=4)] = 1 ``` However, if I merge both DataArrays into a single Dataset and want to change both variables at the same time, there seems to be no straightforward solution: ``` ds = xr.merge([da1, da2]) ds.loc[dict(x=1, y=4)] = ... <-- what to write here? ``` The only solution I could come up with is to modify the two values separately, but this is neither very elegant nor scales with the number of variables: ``` ds['var1'].loc[dict(x=1, y=4)] = 2 ds['var2'].loc[dict(x=1, y=4)] = 3 ``` All I could find in the docs about this issue is: > Using indexing to assign values to a subset of dataset (e.g., ds[dict(space=0)] = 1) is not yet supported. If not by indexing, what other (more compact) way exists? A potential solution might be to create a separate Dataset and then use the `update` method, but this seems overly complicated, too. ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/3015/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue