Это дает мне ошибку:
import numpy as np
x = np.array([[1, 'O', 1]],
dtype=np.dtype([('step', 'int32'),
('symbol', '|S1'),
('index', 'int32')]))
TypeError: expected a readable buffer object
Я не знаю, почему это должно не получиться?
Альтернативно, как я могу заставить что-то подобное этому выражению работать?
x = np.array([[1, 'O', 1]])
затем
x.dtype = np.dtype([('step', 'int32'),('symbol', '|S1'),('index', 'int32')])
или
x.view(dtype=np.dtype([('step', 'int32'),('symbol', '|S1'),('index', 'int32')]))
оба дают мне
ValueError: new type not compatible with array.
Редактировать
Если я попытаюсь ввести каждую запись в виде кортежа, он подумает, что тройка - это одно значение, а не три отдельных поля?Например:
import numpy as np
x = np.array([(1, 'O', 1)],
dtype=np.dtype([('step', 'int32'),
('symbol', '|S1'),
('index', 'int32')]))
кажется нормальным, пока я не сделаю это:
import numpy.lib.recfunctions as rec
rec.append_fields(x,'x',x['index']+1)
дает мне
TypeError: object of type 'numpy.int32' has no len()
предположительно, потому что x.shape
- это (1,)чем (1,3).