У меня есть массив строк, сгруппированных в три поля:
x = np.array([(-1, 0, 1),
(-1, 1, 0),
(0, 1, -1),
(0, -1, 1)],
dtype=[('a', 'S2'),
('b', 'S2'),
('c', 'S2')])
Я хотел бы преобразовать в числовой массив (типа np.int8
для предпочтения, но не обязательно), в форме 4x3,вместо полей.
Мой общий подход - преобразовать массив 4x3 типа 'S2', а затем использовать astype
, чтобы сделать его числовым.Единственная проблема заключается в том, что единственный подход, который я могу придумать, включает в себя как view
, так и np.lib.stride_tricks.as_strided
, что не кажется очень надежным решением:
y = np.lib.stride_tricks.as_strided(x.view(dtype='S2'),
shape=(4, 3), strides=(6, 2))
z = y.astype(np.int8)
Это работает для случая игрушек, показанного здесь, но я чувствую, что должен быть более простой способ распаковать массив с полями, имеющими одинаковый dtype.Что является более надежной альтернативой?