我有这样一个xarray数据集:
<xarray.Dataset>
Dimensions: (AND obs_dim_0: 36, NAND obs_dim_0: 37, NOR obs_dim_0: 36, OR obs_dim_0: 30, XNOR obs_dim_0: 34, XOR obs_dim_0: 34, chain: 4, draw: 500)
Coordinates:
* chain (chain) int64 0 1 2 3
* draw (draw) int64 0 1 2 3 4 5 6 7 ... 493 494 495 496 497 498 499
* AND obs_dim_0 (AND obs_dim_0) int64 0 1 2 3 4 5 6 ... 29 30 31 32 33 34 35
* NAND obs_dim_0 (NAND obs_dim_0) int64 0 1 2 3 4 5 6 ... 31 32 33 34 35 36
* NOR obs_dim_0 (NOR obs_dim_0) int64 0 1 2 3 4 5 6 ... 29 30 31 32 33 34 35
* OR obs_dim_0 (OR obs_dim_0) int64 0 1 2 3 4 5 6 ... 23 24 25 26 27 28 29
* XNOR obs_dim_0 (XNOR obs_dim_0) int64 0 1 2 3 4 5 6 ... 28 29 30 31 32 33
* XOR obs_dim_0 (XOR obs_dim_0) int64 0 1 2 3 4 5 6 ... 27 28 29 30 31 32 33
Data variables:
AND obs (chain, draw, AND obs_dim_0) float64 3.802 5.118 ... 4.205
NAND obs (chain, draw, NAND obs_dim_0) float64 5.619 6.705 ... 6.633
NOR obs (chain, draw, NOR obs_dim_0) float64 4.515 6.268 ... 5.068
OR obs (chain, draw, OR obs_dim_0) float64 4.323 5.856 ... 6.111
XNOR obs (chain, draw, XNOR obs_dim_0) float64 3.441 5.183 ... 7.014
XOR obs (chain, draw, XOR obs_dim_0) float64 4.9 6.517 ... 5.65
Attributes:
created_at: 2019-10-20T20:12:11.936807
inference_library: pymc3
inference_library_version: 3.7
我想把它转换成一个带有单个数据变量(称之为obs
)的数据集,并带有一个新的维度gate
,它接受值['AND, 'NAND', 'NOR'. 'OR', 'XNOR', 'XOR']
。我还想把六个不同的维度/坐标(AND obs_dim_0
,NAND obs_dim_0
,等等)展平成一个var_idx
维度。这样我就可以通过使用ds.sel(gate='AND', obs_idx=n)
来处理值
有很多关于融合数据集的讨论,我觉得我应该能够使用一些split-apply组来划分这个数据集并将它放回一起,但是我不明白。我试过选择变量然后叠加,但是我得到的是xarray而不是数据集。我尝试过将维度重命名为all obs_idx
,但是当我尝试设置坐标时,我做不到,因为不同的维度有不同的大小
xarray.Dataset.to_array(dim = 'gate')
应该有用相关问题 更多 >
编程相关推荐