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-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-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