Как построить структуру данных sparse.COO с помощью holoviews? - PullRequest
0 голосов
/ 28 марта 2020

Как можно построить один график (2D) данных sparse.COO (который организован с помощью xarray DataArray) с holoviews?

Давайте предположим, что у меня есть хорошо организованный xarray xr1, данные поступают из массива dask и Я преобразую эти данные в sparse.COO:

import sparse
xr1 = xarray.apply_ufunc(sparse.COO, xr1, dask="parallelized", output_dtypes=[xr1.dtype])

, тогда я не могу просто вырезать 2D-часть из моего xarray и сказать:

import holoviews as hv
hv.Scatter(xr1["DataArray1"].sel(dimension="dim1"))

, потому что это приводит к ошибке, говорящей:

.......
.......
.......\site-packages\holoviews\core\data\xarray.py in values(cls, dataset, dim, expanded, flat, compute)
    327                 data = data.compute()
    328             data = cls.canonicalize(dataset, data, data_coords=data_coords,
--> 329                                     virtual_coords=virtual_coords)
    330             return data.T.flatten() if flat else data
    331         elif expanded:

.......\site-packages\holoviews\core\data\grid.py in canonicalize(cls, dataset, data, data_coords, virtual_coords)
    287         # Allow lower dimensional views into data
    288         if len(dataset.kdims) < 2:
--> 289             data = data.flatten()
    290         return data
    291 

AttributeError: 'COO' object has no attribute 'flatten'

Я предполагаю, что форма результирующей агрегации данных как-то связана с этим, как с xr1["DataArray1"].sel(dimension="dim1") Я получаю объект данных xr, такой как dask.array<getitem, shape=(100,), dtype=float64, chunksize=(80,), chunktype=sparse.COO> вместо чего-то вроде shape = (100,1)!?

Я ценю любую помощь, спасибо!

...