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/3484#issuecomment-627316607,https://api.github.com/repos/pydata/xarray/issues/3484,627316607,MDEyOklzc3VlQ29tbWVudDYyNzMxNjYwNw==,23187108,2020-05-12T12:39:07Z,2020-05-12T12:39:07Z,NONE,"> da.copy(data=da.data.todense()).plot() should work.
It works indeed, thank you!","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,517338735
https://github.com/pydata/xarray/issues/3484#issuecomment-626793618,https://api.github.com/repos/pydata/xarray/issues/3484,626793618,MDEyOklzc3VlQ29tbWVudDYyNjc5MzYxOA==,2448579,2020-05-11T15:59:41Z,2020-05-11T15:59:41Z,MEMBER,"`da.copy(data=da.data.todense()).plot()` should work.
We should add `as_sparse` and `to_dense` methods. See discussion here: https://github.com/pydata/xarray/issues/3245. A PR would be very welcome if you have the time.","{""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,517338735
https://github.com/pydata/xarray/issues/3484#issuecomment-626787590,https://api.github.com/repos/pydata/xarray/issues/3484,626787590,MDEyOklzc3VlQ29tbWVudDYyNjc4NzU5MA==,23187108,2020-05-11T15:49:24Z,2020-05-11T15:49:24Z,NONE,"Hello, do you have any documentation on how to plot data in a sparse array using `xarray.plot` accessor?
I get this error, but if I convert to numpy/scipy with `todense()` method I will likely lose the convenient plot method from xarray... Thank you for your help
```python
-------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
in
----> 1 slice_res_ds['value'].plot()
~/.pyenv/versions/emi/lib/python3.6/site-packages/xarray/plot/plot.py in __call__(self, **kwargs)
463
464 def __call__(self, **kwargs):
--> 465 return plot(self._da, **kwargs)
466
467 @functools.wraps(hist)
~/.pyenv/versions/emi/lib/python3.6/site-packages/xarray/plot/plot.py in plot(darray, row, col, col_wrap, ax, hue, rtol, subplot_kws, **kwargs)
200 kwargs[""ax""] = ax
201
--> 202 return plotfunc(darray, **kwargs)
203
204
~/.pyenv/versions/emi/lib/python3.6/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)
692
693 # Pass the data as a masked ndarray too
--> 694 zval = darray.to_masked_array(copy=False)
695
696 # Replace pd.Intervals if contained in xval or yval.
~/.pyenv/versions/emi/lib/python3.6/site-packages/xarray/core/dataarray.py in to_masked_array(self, copy)
2301 Masked where invalid values (nan or inf) occur.
2302 """"""
-> 2303 values = self.values # only compute lazy arrays once
2304 isnull = pd.isnull(values)
2305 return np.ma.MaskedArray(data=values, mask=isnull, copy=copy)
~/.pyenv/versions/emi/lib/python3.6/site-packages/xarray/core/dataarray.py in values(self)
565 def values(self) -> np.ndarray:
566 """"""The array's data as a numpy.ndarray""""""
--> 567 return self.variable.values
568
569 @values.setter
~/.pyenv/versions/emi/lib/python3.6/site-packages/xarray/core/variable.py in values(self)
446 def values(self):
447 """"""The variable's data as a numpy.ndarray""""""
--> 448 return _as_array_or_item(self._data)
449
450 @values.setter
~/.pyenv/versions/emi/lib/python3.6/site-packages/xarray/core/variable.py in _as_array_or_item(data)
252 TODO: remove this (replace with np.asarray) once these issues are fixed
253 """"""
--> 254 data = np.asarray(data)
255 if data.ndim == 0:
256 if data.dtype.kind == ""M"":
~/.pyenv/versions/emi/lib/python3.6/site-packages/numpy/core/_asarray.py in asarray(a, dtype, order)
83
84 """"""
---> 85 return array(a, dtype, copy=False, order=order)
86
87
~/.pyenv/versions/emi/lib/python3.6/site-packages/sparse/_sparse_array.py in __array__(self, **kwargs)
221 if not AUTO_DENSIFY:
222 raise RuntimeError(
--> 223 ""Cannot convert a sparse array to dense automatically. ""
224 ""To manually densify, use the todense method.""
225 )
RuntimeError: Cannot convert a sparse array to dense automatically. To manually densify, use the todense method.
```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,517338735
https://github.com/pydata/xarray/issues/3484#issuecomment-549627590,https://api.github.com/repos/pydata/xarray/issues/3484,549627590,MDEyOklzc3VlQ29tbWVudDU0OTYyNzU5MA==,10554254,2019-11-05T01:50:29Z,2020-02-12T02:51:51Z,NONE,"After reading through the issue tracker and PRs, it looks like sparse arrays can safely be wrapped with xarray, thanks to the work done in [PR#3117](https://github.com/pydata/xarray/pull/3117), but built-in functions are still under development (e.g. [PR#3542](https://github.com/pydata/xarray/pull/3542)). As a user, here is what I am seeing when test driving sparse:
Sparse gives me a smaller in-memory array
```python
In [1]: import xarray as xr, sparse, sys, numpy as np, dask.array as da
In [2]: x = np.random.random((100, 100, 100))
In [3]: x[x < 0.9] = np.nan
In [4]: s = sparse.COO.from_numpy(x, fill_value=np.nan)
In [5]: sys.getsizeof(s)
Out[5]: 3189592
In [6]: sys.getsizeof(x)
Out[6]: 8000128
```
Which I can wrap with dask and xarray
```python
In [7]: x = da.from_array(x)
In [8]: s = da.from_array(s)
In [9]: ds_dense = xr.DataArray(x).to_dataset(name='data_variable')
In [10]: ds_sparse = xr.DataArray(s).to_dataset(name='data_variable')
In [11]: ds_dense
Out[11]:
Dimensions: (dim_0: 100, dim_1: 100, dim_2: 100)
Dimensions without coordinates: dim_0, dim_1, dim_2
Data variables:
data_variable (dim_0, dim_1, dim_2) float64 dask.array
In [12]: ds_sparse
Out[12]:
Dimensions: (dim_0: 100, dim_1: 100, dim_2: 100)
Dimensions without coordinates: dim_0, dim_1, dim_2
Data variables:
data_variable (dim_0, dim_1, dim_2) float64 dask.array
```
However, computation on a sparse array takes longer than running compute on a dense array (which I think is expected...?)
```python
In [13]: %%time
...: ds_sparse.mean().compute()
CPU times: user 487 ms, sys: 22.9 ms, total: 510 ms
Wall time: 518 ms
Out[13]:
Dimensions: ()
Data variables:
data_variable float64 0.9501
In [14]: %%time
...: ds_dense.mean().compute()
CPU times: user 10.9 ms, sys: 3.91 ms, total: 14.8 ms
Wall time: 13.8 ms
Out[14]:
Dimensions: ()
Data variables:
data_variable float64 0.9501
```
And writing to netcdf, to take advantage of the smaller data size, doesn't work out of the box (yet)
```python
In [15]: ds_sparse.to_netcdf('ds_sparse.nc')
Out[15]: ...
RuntimeError: Cannot convert a sparse array to dense automatically. To manually densify, use the todense method.
```
Additional discussion happening at #3213
@dcherian @shoyer Am I missing any built-in methods that are working and ready for public release? Happy to send in a PR, if any of what is provided here should go into a basic example for the docs.
At this stage, I am not using sparse arrays for my own research just yet, but when I get to that anticipated phase I can dig in more on this and hopefully send in some useful PRs for improved documentation and fixes/features.
","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,517338735
https://github.com/pydata/xarray/issues/3484#issuecomment-550471849,https://api.github.com/repos/pydata/xarray/issues/3484,550471849,MDEyOklzc3VlQ29tbWVudDU1MDQ3MTg0OQ==,4605410,2019-11-06T19:48:17Z,2019-11-06T19:48:17Z,NONE,"@friedrichknuth One of my motivations behind exploring sparse DataArray backends is in reducing the memory footprint during merge operations. Consider the following:
One can imagine many such merge operations producing a lot of effectively empty indices. While sparse backed arrays might have the ability to condense these empty indices in memory, it seems like [xarray sparse merging isnt quite compatible yet.](https://github.com/pydata/xarray/issues/3445#issue-512205079)","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,517338735
https://github.com/pydata/xarray/issues/3484#issuecomment-549559629,https://api.github.com/repos/pydata/xarray/issues/3484,549559629,MDEyOklzc3VlQ29tbWVudDU0OTU1OTYyOQ==,2448579,2019-11-04T21:40:16Z,2019-11-04T21:40:16Z,MEMBER,maybe @friedrichknuth can contribute some :),"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,517338735