请考虑以下示例。我有一个尺寸为a
和ID
的xarray coords
。然后,我还有另一个尺寸为ID
和Nodes
的xarray
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]
本身进行切片,则生成的xarray b[0]
丢失维度coords_b0
上的坐标,而使用ID
会导致错误
xr.DataArray.loc
这是怎么回事?这是错误还是通缉的行为?