python Несоответствие длины Xarray - PullRequest
1 голос
/ 17 января 2020

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

1 Ответ

0 голосов
/ 04 марта 2020

Указание dims в виде списка, например, dims = ['x', 'y', 'z'], вместо набора делает трюк, см. Комментарий spencerclark.

...