Я предполагаю, что recarray
имеет dtype
, где одно из полей имеет форму 5:
In [48]: dt = np.dtype([('X',int,5),('Y',float)])
In [49]: arr = np.zeros(3, dtype=dt)
In [50]: arr
Out[50]:
array([([0, 0, 0, 0, 0], 0.), ([0, 0, 0, 0, 0], 0.),
([0, 0, 0, 0, 0], 0.)], dtype=[('X', '<i8', (5,)), ('Y', '<f8')])
Доступ к этому полю по имени дает массив (3,5) формы (аналог вашей (92,5):
In [51]: arr['X']
Out[51]:
array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])
Это можно описать как список из 5 элементов для каждой записи, но при индексировании по имени поля создается двумерный массив, который может индексироваться как любой двумерный массив с нулевыми значениями.
Давайте установим эти значения на что-то интересное:
In [52]: arr['X'] = np.arange(15).reshape(3,5)
In [53]: arr
Out[53]:
array([([ 0, 1, 2, 3, 4], 0.), ([ 5, 6, 7, 8, 9], 0.),
([10, 11, 12, 13, 14], 0.)],
dtype=[('X', '<i8', (5,)), ('Y', '<f8')])
Мы можем получить первый столбец этого поля с помощью:
In [54]: arr['X'][:,0]
Out[54]: array([ 0, 5, 10])
Если у вас есть несколько полей с такой структурой, вам, вероятно, придется обращаться к каждому из них по имени. Существует ограничение на то, что вы можете делать с многопольным индексированием.