объединить наборы данных по нескольким измерениям

У меня есть несколько данных с одинаковыми coords и похожими значениями для них. То есть, нет единого уникального идентификатора, а есть комбинированный идентификатор (index, split). В идеале я хотел бы просто добавить все наборы данных один за другим, но я не нашел правильного способа сделать это.

import xarray as xr
from xarray import Dataset
import numpy as np

datasets = []
for split in range(3):
    dim2_len = 4
    dim1_len = 3
    data_len = 5
    d = Dataset({'data1': (['index', 'dim1'], np.random.rand(data_len, dim1_len)),
                 'data2': (['index', 'dim2'], np.random.rand(data_len, dim2_len)),
                 'data3': (['index', 'dim2'], np.random.rand(data_len, dim2_len))},
                coords={'index': range(data_len),
                        'dim2': range(dim2_len),
                        'dim1': range(dim1_len),
                        'split': split})
    datasets.append(d)

xr.auto_combine(datasets)
# ValueError: too many different dimensions to concatenate: {'dim1', 'dim2', 'index'}

Текущая функция xr.concat/xr.auto_combine не позволяет объединять наборы данных по нескольким измерениям (https://github.com/pydata/xarray/blob/4b8339b53f1b9dcd79f2a9060933713328a13b90/xarray/core/combine.py#L358). Я думаю, я мог бы вручную взять все данные и координаты и добавить их в новый набор данных, но похоже, что в библиотеке должен быть лучший способ.

Есть ли способ объединить наборы данных по нескольким измерениям?


person mschrimpf    schedule 29.11.2017    source источник
comment
Можете ли вы предоставить некоторый код, объясняющий, что вы пробовали, и краткую информацию о том, как структурированы ваши наборы данных? Этот вопрос не является полным в его нынешнем виде.   -  person jhamman    schedule 29.11.2017
comment
Я только что ответил на аналогичный вопрос: stackoverflow.com/questions/47545138/, можете ли вы попробовать разбить свои concat операции на части, по одному измерению за раз?   -  person jhamman    schedule 30.11.2017