Рассмотрим следующий пример.У меня есть 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
Что такоездесь происходит?Это ошибка или желаемое поведение?