Esto me da un error:¿Cómo crear una matriz de registro numpy?
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
No sé por qué esto debería fallar?
Alternativamente, ¿cómo puedo forzar algo como esta declaración para que funcione?
x = np.array([[1, 'O', 1]])
continuación
x.dtype = np.dtype([('step', 'int32'),('symbol', '|S1'),('index', 'int32')])
o
x.view(dtype=np.dtype([('step', 'int32'),('symbol', '|S1'),('index', 'int32')]))
tanto dame
ValueError: new type not compatible with array.
Editar
Si trato de ingresar cada registro como una tupla, ¿pensará que el triple es un valor único, en lugar de tres campos separados? Por ejemplo:
import numpy as np
x = np.array([(1, 'O', 1)],
dtype=np.dtype([('step', 'int32'),
('symbol', '|S1'),
('index', 'int32')]))
parece estar bien hasta que lo haga esto:
import numpy.lib.recfunctions as rec
rec.append_fields(x,'x',x['index']+1)
me da
TypeError: object of type 'numpy.int32' has no len()
presumiblemente porque es x.shape
(1,) en lugar de (1,3).
Gracias, pero entonces la forma de X es (1,) en lugar de (1,3)? – hatmatrix
Eso es lo que se supone que debes obtener al definir una matriz estructurada. Puede acceder a las columnas con sintaxis como: 'x ['symbol']' – unutbu
Gracias, publicaré el campo anexo como una pregunta separada. – hatmatrix