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/7767#issuecomment-1514925779,https://api.github.com/repos/pydata/xarray/issues/7767,1514925779,IC_kwDOAMm_X85aS-7T,35968931,2023-04-19T15:20:11Z,2023-04-19T15:20:31Z,MEMBER,"> So while `xr.where(cond, x, y)` is semantically, ""where condition is true, x, else y"", `da.where(cond, x)` is ""where condition is true da, else x"".
Adding this description to both docstrings would be a helpful clarification IMO.","{""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1674532233
https://github.com/pydata/xarray/issues/7767#issuecomment-1514489469,https://api.github.com/repos/pydata/xarray/issues/7767,1514489469,IC_kwDOAMm_X85aRUZ9,14808389,2023-04-19T10:20:08Z,2023-04-19T10:20:08Z,MEMBER,"According to #503, there's two reasons: the fact that for masking this is so much easier to write (including when method chaining), and it is also API inherited from `pandas`.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1674532233
https://github.com/pydata/xarray/issues/7767#issuecomment-1514473763,https://api.github.com/repos/pydata/xarray/issues/7767,1514473763,IC_kwDOAMm_X85aRQkj,34276374,2023-04-19T10:08:52Z,2023-04-19T10:08:52Z,NONE,"Thanks for the replies
So while `xr.where(cond, x, y)` is semantically, ""where condition is true, x, else y"", `da.where(cond, x)` is ""where condition is true `da`, else x"".
The latter feels quite unintuitive to me. Is the reason they're different only for the mask example you provided? Where NaN is returned as the default 'x' value?","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1674532233
https://github.com/pydata/xarray/issues/7767#issuecomment-1514441250,https://api.github.com/repos/pydata/xarray/issues/7767,1514441250,IC_kwDOAMm_X85aRIoi,14808389,2023-04-19T09:45:27Z,2023-04-19T09:46:47Z,MEMBER,"to elaborate on that, `xr.DataArray.where` uses `self` as ""then"" and the second argument as ""other"", while for `xr.where` the second argument is ""then"" and the third argument is ""other"" (the condition is the first argument for both).
This API allows masking using just
```python
arr.where(mask)
```","{""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1674532233
https://github.com/pydata/xarray/issues/7767#issuecomment-1514437541,https://api.github.com/repos/pydata/xarray/issues/7767,1514437541,IC_kwDOAMm_X85aRHul,5821660,2023-04-19T09:42:29Z,2023-04-19T09:42:29Z,MEMBER,"I think the equivalent incantation would be (note the different order of arguments in `xr.where`):
```python
da = xr.DataArray(np.arange(10))
print(xr.where(da < 5, da, 0).values)
print(da.where(da < 5, 0).values)
```
```
[0 1 2 3 4 0 0 0 0 0]
[0 1 2 3 4 0 0 0 0 0]
```
","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1674532233