У меня есть набор данных 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, но я просто не понимаю. Я попытался выбрать переменные и затем наложить, но затем я получаю xarrays вместо набора данных. Я попытался переименовать все размеры в obs_idx
, но затем, когда я пытаюсь установить координаты, я не могу, потому что разные размеры имеют разные размеры.