假设我有以下 DataArray
arr = xarray.DataArray(np.arange(6).reshape(2,3),
dims=['A', 'B'],
coords=dict(A=['a0', 'a1'],
B=['b0', 'b1', 'b2']))
我想迭代第一个维度并执行以下操作(当然我想做比打印更复杂的事情)for coor in arr.A.values:
print(coor, arr.sel(A=coor).values)
并得到a0 [0 1 2]
a1 [3 4 5]
我是 xarray
的新手,所以我想知道是否有更自然的方法来实现这一点,比如for coor, sub_arr in arr.some_method():
print(coor, sub_arr)
最佳答案
您可以简单地迭代 DataArray - 迭代器的每个元素本身都是一个 DataArray,第一个坐标只有一个值:
for a in arr:
print(a.A.item(), a.values)
打印a0 [0 1 2]
a1 [3 4 5]
注意 .item()
的使用访问零维数组的标量值的方法a.A
.要遍历第二个维度,您只需转置数据:
for b in arr.T: # or arr.transpose()
print(b.B.item(), b.values)
打印b0 [0 3]
b1 [1 4]
b2 [2 5]
对于多维数据,您可以使用省略号将要迭代的维度移至首位:for x in arr.transpose("B", ...):
# x has one less dimension than arr, and x.B is a scalar
do_stuff_with(x)
documentation关于 reshape 和重组数据有进一步的细节。
关于python - 遍历 xarray。 DataArray 第一维及其坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57971818/