首页 > 解决方案 > Holoviews:降维的数据集选择

问题描述

import numpy as np 
import holoviews as hv
data = np.random.rand(100, 100, 3,10)
times = np.arange(0,10)
ds = hv.Dataset((times,channels,
                 np.linspace(0., 1., 100),
                 np.linspace(0., 1., 100),
                 data),
                kdims=['t', 'c', 'y', 'x'],
                vdims=hv.Dimension('T', range=(0, .9)))
ds.select(c='a',t=0)

返回

:Dataset   [t,c,y,x]   (T)

我怎样才能得到一个删除了单个维度的数据集,即

:Dataset   [y,x]   (T)

标签: pythonholoviews

解决方案


一种解决方案是将数据集定义为 axarrayholoviews在需要时将其转换为数据集。

import numpy as np 
import holoviews as hv
import xarray as xr
data = np.random.rand(100, 100, 3,10)
times = np.arange(0,10)
channels=['a','b','c']
ds = hv.Dataset((times,channels,
                 np.linspace(0., 1., 100),
                 np.linspace(0., 1., 100),
                 data),
                kdims=['t', 'c', 'y', 'x'],
                vdims=hv.Dimension('T', range=(0, .9)))
print(ds.select(c='a',t=0))

da = xr.DataArray(
        np.random.rand(times.shape[0], len(channels), 100, 100),
        [
            ("t", times),
            ("c", channels),
            ("y", np.linspace(0., 1., 100)),
            ("x", np.linspace(0., 1., 100)),
         ],
         )
ds = da.to_dataset(name="T")
print(hv.Dataset(ds.loc[dict(c='a',t=0)]))

推荐阅读