Как объединить несколько переменных данных xarray и их координаты? - PullRequest
0 голосов
/ 21 октября 2019

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

1 Ответ

0 голосов
/ 21 октября 2019

xarray.Dataset.to_array(dim = 'gate') должно работать.

...