xarray DataArray.sel возвращает координаты, изначально не назначенные данным - PullRequest
0 голосов
/ 03 марта 2020

У меня есть многомерный набор данных, хранящийся в xarray DataArrays. Я хотел бы выбрать часть DataArray и удалить координаты, которые не содержатся в наборе координат, которые я выбираю. Например:

ar1 = xr.DataArray(np.random.random((5,3,3)),
                  coords={'range':np.arange(0,5), 'vars':['var1','var2','var3'], 'axes':['ax1','ax2','ax3']},
                  dims=['range', 'vars', 'axes'],
                  name='ar1' )
ar2 = xr.DataArray(np.random.random((5,1,2)),
                  coords={'range':np.arange(0,5), 'vars':['var4'],'labels':['l1','l2']},
                  dims=['range', 'vars', 'labels'],
                  name='ar2' )

dar = ar1.combine_first(ar2)
dar = dar.sel({'vars':['var1','var2','var3'], 'axes':['ax1','ax2','ax3']}, drop=True)
dar

DataArray.sel дает следующее:

    <xarray.DataArray 'ar1' (range: 5, vars: 3, axes: 3, labels: 2)>
    array([[[[0.38942957, 0.38942957],
             [0.45528695, 0.45528695],
             [0.49853459, 0.49853459]],
             ...
            [[0.67717998, 0.67717998],
             [0.89777309, 0.89777309],
             [0.47580058, 0.47580058]]]])
    Coordinates:
      * vars     (vars) object 'var1' 'var2' 'var3'
      * range    (range) int64 0 1 2 3 4
      * axes     (axes) <U3 'ax1' 'ax2' 'ax3'
      * labels   (labels) <U2 'l1' 'l2'

Но var1, var2, var3 не имеет координаты labels. Как мне избавиться от лишних координат, сохраняющих структуру данных выбранной детали?

Любое предложение приветствуется.

ОБНОВЛЕНИЕ : Требуемый вывод

   <xarray.DataArray 'ar1' (range: 5, vars: 3, axes: 3)>
    array([[[[0.38942957, 0.38942957],
             [0.45528695, 0.45528695],
             [0.49853459, 0.49853459]],
             ...
            [[0.67717998, 0.67717998],
             [0.89777309, 0.89777309],
             [0.47580058, 0.47580058]]]])
    Coordinates:
      * vars     (vars) object 'var1' 'var2' 'var3'
      * range    (range) int64 0 1 2 3 4
      * axes     (axes) <U3 'ax1' 'ax2' 'ax3'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...