Disons que j'ai des données simples
y = [[datetime.datetime( 2012,1,1,1,1), 2.1],
[datetime.datetime( 2012,1,1,1,2), -3.1],
[datetime.datetime( 2012,1,1,1,3), 0.1]]
et je veux un tableau numpy record qui lui correspond. Il semblerait que je devrais pouvoir faire ceci:
np.rec.array( y, dtype=[("timestamp", object),("x","f")] )
ou ca
np.rec.array( y, dtype=[("timestamp", "|O8"),("x","f")] )
ou peut-être cela
np.rec.array( y, dtype=[("timestamp", "V"),("x","f")] )
Mais chacun d'eux renvoie une erreur, soit
ValueError: Setting void-array with object members using buffer.
ou
TypeError: expected a readable buffer object
Alors, comment puis-je configurer cela, en supposant que ce soit même possible?
Réponses:
5 pour la réponse № 1Vous pouvez utiliser des n-uplets au lieu de listes pour les enregistrements:
>> y = [(datetime.datetime( 2012,1,1,1,1), 2.1),
... (datetime.datetime( 2012,1,1,1,2), -3.1),
... (datetime.datetime( 2012,1,1,1,3), 0.1)]
>> np.rec.array(y, dtype=[("timestamp", object), ("x","f")])
rec.array([(datetime.datetime(2012, 1, 1, 1, 1), 2.0999999046325684),
(datetime.datetime(2012, 1, 1, 1, 2), -3.0999999046325684),
(datetime.datetime(2012, 1, 1, 1, 3), 0.10000000149011612)],
dtype=[("timestamp", "|O8"), ("x", "<f4")])