【发布时间】:2021-05-07 16:59:45
【问题描述】:
我正在尝试通过遵循docs 中的此示例来了解xarray 中的矢量化索引:
import xarray as xr
import numpy as np
da = xr.DataArray(np.arange(12).reshape((3, 4)), dims=['x', 'y'],
coords={'x': [0, 1, 2], 'y': ['a', 'b', 'c', 'd']})
ind_x = xr.DataArray([0, 1], dims=['x'])
ind_y = xr.DataArray([0, 1], dims=['y'])
数组da的输出如下:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
到目前为止一切顺利。现在在示例中显示了两种索引方式。正交(对这种情况不感兴趣)和矢量化(我想要的)。对于矢量化索引,如下所示:
In [37]: da[ind_x, ind_x] # vectorized indexing
Out[37]:
<xarray.DataArray (x: 2)>
array([0, 5])
Coordinates:
y (x) <U1 'a' 'b'
* x (x) int64 0 1
结果似乎是我想要的,但这对我来说感觉很奇怪。 ind_x(理论上指的是dims=['x'])被传递了两次,但不知何故能够索引x 和y 暗淡中似乎存在的内容。据我了解,x dim 是行,y dim 是列,对吗?为什么同一个ind_x 能够同时访问行和列?
这似乎是我的问题所需要的概念,但无法理解它是如何工作的或如何将其扩展到更多维度。我原以为da[ind_x, ind_y] 会给出这个结果,但这似乎足以令人惊讶地产生正交索引。
【问题讨论】:
标签: python arrays indexing python-xarray