Индекс теряется при разрезании xarray DataArray с другим DataArray - PullRequest
0 голосов
/ 24 мая 2019

Рассмотрим следующий пример.У меня есть xarray a с размерами ID и coords.Затем у меня есть другой xarray с размерами ID и Nodes

import xarray as xr
import numpy as np

a = xr.DataArray(np.random.rand(10, 3),
                 dims   = ('ID','Coord'),
                 coords = {'ID':    range(100,110),
                           'Coord': ['x','y','z']
                           }
                 )

b = xr.DataArray([[101, 104, 103],
                  [104, 105, 103]],
                 dims   = ('ID','Nodes'),
                 coords = {'ID':    range(1000,1002)
                           }
                 )

Если я срезаю a, используя значения в первой строке b, я получаю новый xarray, который является идеальным срезомa.Это означает, что он поддерживает координаты в измерении ID, и я могу нарезать его дальше, используя xr.DataArray.loc.

coords_b0 = a.loc[b[0].values]
print(coords_b0)
coords_b0.loc[101]

Однако, если я не нарежу a со значениями из b[0], но с самим b[0] полученный xarray coords_b0 теряет координаты измерения ID, а использование xr.DataArray.loc приводит к ошибке

coords_b0 = a.loc[b[0]]
print(coords_b0)
coords_b0.loc[101] #<-- RETURNS AN ERROR

Что такоездесь происходит?Это ошибка или желаемое поведение?

...