python - 遍历 xarray。 DataArray 第一维及其坐标

标签 python python-xarray

假设我有以下 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/

相关文章:

python pandas 用空格将字符串列分成两部分

python - 在 Python 中随机交错 2 个数组

javascript - 使用 hmac 和 sha256 的 Python 加密不会给出与 javascript 相同的结果

python - 如何分解 pandas 中的选定列

python - 使用纬度经度坐标从卫星图像获取最近的像素值

python - 使用 xarray 和 matplotlib 绘制年度总和图

python - 单元测试时如何获得实际的 Pyramid 请求

python-3.x - AttributeError:模块 'numpy.random' 在 python 3.8.10 中没有属性 'BitGenerator'

python - X数组 : add a "layer" of data to NetCDF

python - 有人可以解释 xarray.polyfit 系数背后的逻辑吗?