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/3232#issuecomment-655751621,https://api.github.com/repos/pydata/xarray/issues/3232,655751621,MDEyOklzc3VlQ29tbWVudDY1NTc1MTYyMQ==,13301940,2020-07-08T20:54:15Z,2020-07-08T20:54:15Z,MEMBER,"> @jacobtomlinson gave CuPy a go a few months back. I seem to remember that he ran into a few problems but it would be good to get those documented here.
I've been test driving xarray objects backed by CuPy arrays, and one issue I keep running into is that operations (such as plotting) that expect numpy arrays fail due to xarray's implicit converstion to Numpy arrays via `np.asarray()`. CuPy decided not to allow implicit conversion to NumPy arrays (see https://github.com/cupy/cupy/pull/3421).
I am wondering whether there is a plan for dealing with this issue?
Here's a small, reproducible example:
```python
[23]: ds.tmin.data.device
[24]: ds.isel(time=0, lev=0).tmin.plot() # Fails
```
Traceback
```python
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
in
----> 1 ds.isel(time=0, lev=0).tmin.plot()
/glade/work/abanihi/softwares/miniconda3/envs/rapids/lib/python3.7/site-packages/xarray/plot/plot.py in __call__(self, **kwargs)
444
445 def __call__(self, **kwargs):
--> 446 return plot(self._da, **kwargs)
447
448 @functools.wraps(hist)
/glade/work/abanihi/softwares/miniconda3/envs/rapids/lib/python3.7/site-packages/xarray/plot/plot.py in plot(darray, row, col, col_wrap, ax, hue, rtol, subplot_kws, **kwargs)
198 kwargs[""ax""] = ax
199
--> 200 return plotfunc(darray, **kwargs)
201
202
/glade/work/abanihi/softwares/miniconda3/envs/rapids/lib/python3.7/site-packages/xarray/plot/plot.py in newplotfunc(darray, x, y, figsize, size, aspect, ax, row, col, col_wrap, xincrease, yincrease, add_colorbar, add_labels, vmin, vmax, cmap, center, robust, extend, levels, infer_intervals, colors, subplot_kws, cbar_ax, cbar_kwargs, xscale, yscale, xticks, yticks, xlim, ylim, norm, **kwargs)
684
685 # Pass the data as a masked ndarray too
--> 686 zval = darray.to_masked_array(copy=False)
687
688 # Replace pd.Intervals if contained in xval or yval.
/glade/work/abanihi/softwares/miniconda3/envs/rapids/lib/python3.7/site-packages/xarray/core/dataarray.py in to_masked_array(self, copy)
2325 Masked where invalid values (nan or inf) occur.
2326 """"""
-> 2327 values = self.values # only compute lazy arrays once
2328 isnull = pd.isnull(values)
2329 return np.ma.MaskedArray(data=values, mask=isnull, copy=copy)
/glade/work/abanihi/softwares/miniconda3/envs/rapids/lib/python3.7/site-packages/xarray/core/dataarray.py in values(self)
556 def values(self) -> np.ndarray:
557 """"""The array's data as a numpy.ndarray""""""
--> 558 return self.variable.values
559
560 @values.setter
/glade/work/abanihi/softwares/miniconda3/envs/rapids/lib/python3.7/site-packages/xarray/core/variable.py in values(self)
444 def values(self):
445 """"""The variable's data as a numpy.ndarray""""""
--> 446 return _as_array_or_item(self._data)
447
448 @values.setter
/glade/work/abanihi/softwares/miniconda3/envs/rapids/lib/python3.7/site-packages/xarray/core/variable.py in _as_array_or_item(data)
247 TODO: remove this (replace with np.asarray) once these issues are fixed
248 """"""
--> 249 data = np.asarray(data)
250 if data.ndim == 0:
251 if data.dtype.kind == ""M"":
/glade/work/abanihi/softwares/miniconda3/envs/rapids/lib/python3.7/site-packages/numpy/core/_asarray.py in asarray(a, dtype, order)
83
84 """"""
---> 85 return array(a, dtype, copy=False, order=order)
86
87
ValueError: object __array__ method not producing an array
```
","{""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,482543307