首页 > 解决方案 > python Xarray长度不匹配

问题描述

我正在学习 Xarray 库,并且正在尝试为 3D 数据创建 Xarray。以下代码段不起作用:

>>> colx = ['c1', 'c2', 'c3', 'c4']
>>> coly = ['a1', 'a2', 'a3']
>>> colz = ['b1', 'b2']
>>> t = xr.DataArray(np.zeros((4,3,2)),dims = {'x', 'y','z'}, coords={'x':colx, 'y': coly, 'z': colz})
>>> t
ValueError: conflicting sizes for dimension 'x': length 3 on the data but length 4 on coordinate 'x'

以下代码有效,但我需要围绕 x、y、z 维度的长度进行置换以创建 Xarray。尺寸 (4,3,2) 被置换为 (3,2,4)。

>>> colx = ['c1', 'c2', 'c3', 'c4']
>>> coly = ['a1', 'a2', 'a3']
>>> colz = ['b1', 'b2']
>>> t = xr.DataArray(np.zeros((4,3,2)),dims = {'x', 'y','z'}, coords={'x':coly, 'y': colz, 'z': colx})
>>> t
<xarray.DataArray (z: 4, x: 3, y: 2)>
array([[[0., 0.],
        [0., 0.],
        [0., 0.]],

       [[0., 0.],
        [0., 0.],
        [0., 0.]],

       [[0., 0.],
        [0., 0.],
        [0., 0.]],

       [[0., 0.],
        [0., 0.],
        [0., 0.]]])
Coordinates:
 * x        (x) <U2 'a1' 'a2' 'a3'
 * y        (y) <U2 'b1' 'b2'
 * z        (z) <U2 'c1' 'c2' 'c3' 'c4'

标签: python-3.xpandaspython-xarray

解决方案


将 dims 指定为列表,例如 dims=['x', 'y', 'z'],而不是 set 可以解决问题,请参阅 spencerclark 的评论。


推荐阅读