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/3813#issuecomment-592799268,https://api.github.com/repos/pydata/xarray/issues/3813,592799268,MDEyOklzc3VlQ29tbWVudDU5Mjc5OTI2OA==,2448579,2020-02-29T01:06:05Z,2023-03-22T15:11:09Z,MEMBER,"It's usually `expand_dims`.
We should add an FAQ for little things like this.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,573031381
https://github.com/pydata/xarray/issues/3813#issuecomment-809858535,https://api.github.com/repos/pydata/xarray/issues/3813,809858535,MDEyOklzc3VlQ29tbWVudDgwOTg1ODUzNQ==,22258697,2021-03-30T02:31:54Z,2021-03-30T02:31:54Z,NONE,I ran into the same issue as @bradyrx with writable arrays and apply_ufunc. An addition to the docs FAQ or apply_ufunc docs would help clarify that you can't write to the array inputs in the ufunc. I also want to +1 @bradyrx 's idea of making an arg to apply_ufunc that copies the input arrays to handle this common use case.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,573031381
https://github.com/pydata/xarray/issues/3813#issuecomment-655142333,https://api.github.com/repos/pydata/xarray/issues/3813,655142333,MDEyOklzc3VlQ29tbWVudDY1NTE0MjMzMw==,8881170,2020-07-07T21:22:30Z,2020-07-07T21:22:30Z,CONTRIBUTOR,"FYI, this is also seen on `xr.apply_ufunc`, but only when `vectorize=True`. It seems like ndarrays write switch are turned off when `vectorize=True`. This is also solved by `.copy()`, which is good anways to avoid mutating the original ndarrays. Perhaps also a `copy=bool` could be added to `apply_ufunc` to create copies of the ndarrays? I'd be happy to lead that PR if it makes sense.
Example:
```python
def match_nans(a, b):
""""""Pairwise matching of nans between two time series.""""""
# Try with and without `.copy` commands.
# a = a.copy()
# b = b.copy()
if np.isnan(a).any() or np.isnan(b).any():
idx = np.logical_or(np.isnan(a), np.isnan(b))
a[idx], b[idx] = np.nan, np.nan
return a, b
A = xr.DataArray(np.random.rand(10, 5), dims=['time', 'space'])
B = xr.DataArray(np.random.rand(10, 5), dims=['time', 'space'])
A[0, 1] = np.nan
B[5, 0] = np.nan
xr.apply_ufunc(match_nans,
A,
B,
input_core_dims=[['time'], ['time']],
output_core_dims=[['time'], ['time']],
# Try with and without vectorize.
vectorize=True,)
```","{""total_count"": 2, ""+1"": 2, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,573031381
https://github.com/pydata/xarray/issues/3813#issuecomment-592874409,https://api.github.com/repos/pydata/xarray/issues/3813,592874409,MDEyOklzc3VlQ29tbWVudDU5Mjg3NDQwOQ==,5635139,2020-02-29T04:56:45Z,2020-02-29T04:56:45Z,MEMBER,"Cheers @djhoese
Yes, let's leave this open. Two follow-ups from https://github.com/pydata/xarray/issues/2891#issuecomment-482880911; we would welcome PRs:
> * Mention the work-around of using `.copy()` in the error message xarray prints when an array is read-only.
>
> * Add a `copy` argument to `expand_dims`, so users can write `copy=True` if they want a writeable result.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,573031381
https://github.com/pydata/xarray/issues/3813#issuecomment-592847155,https://api.github.com/repos/pydata/xarray/issues/3813,592847155,MDEyOklzc3VlQ29tbWVudDU5Mjg0NzE1NQ==,1828519,2020-02-29T03:38:46Z,2020-02-29T03:38:46Z,CONTRIBUTOR,"@max-sixty That's exactly it. What's really weird for this is that the original code in Satpy is using a dask array and not a numpy array. It seemed very strange to both copy the DataArray (`.copy()`), convert the dask array to a numpy array (`np.asarray`), and then still get a read-only array.
I can understand how xarray would treat numpy arrays and dask arrays the same when it comes to this, but coming from outside the project it is very surprising that a dask array would be marked as read-only when it was used to just create a ""new"" numpy array.
Feel free to close this or use it as a marker to clarify some documentation or error messages as mentioned in #2891.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,573031381
https://github.com/pydata/xarray/issues/3813#issuecomment-592805831,https://api.github.com/repos/pydata/xarray/issues/3813,592805831,MDEyOklzc3VlQ29tbWVudDU5MjgwNTgzMQ==,5635139,2020-02-29T01:35:54Z,2020-02-29T01:35:54Z,MEMBER,https://github.com/pydata/xarray/issues/2891,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,573031381
https://github.com/pydata/xarray/issues/3813#issuecomment-592760687,https://api.github.com/repos/pydata/xarray/issues/3813,592760687,MDEyOklzc3VlQ29tbWVudDU5Mjc2MDY4Nw==,5635139,2020-02-28T22:35:18Z,2020-02-28T22:35:18Z,MEMBER,"Thanks for the report @djhoese . Confirmed in 0.15.0 too.
Do you know which of those steps causes the array to become non-writeable?","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,573031381