Я изучаю библиотеку Xarray и пытаюсь создать Xarrays для трехмерных данных. Следующий фрагмент не работает:
>>> 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'
- Это нормально?
- Почему это происходит?
- Как перестановки работают для многомерных данных?