web-dev-qa-db-fra.com

récupérer dict à partir d'un tableau numpy 0-d

Ce qui s'est passé, c'est que j'ai (par erreur) enregistré un dictionnaire avec la commande numpy.save() (aucun message d'erreur affiché) et maintenant je dois récupérer les données dans le dictionnaire. Quand je le charge avec numpy.load() il a le type (numpy.ndarray) Et est 0-d, donc ce n'est plus un dictionnaire et je ne peux pas accéder aux données qu'il contient, 0- les tableaux d ne sont pas indexables, ce qui fait quelque chose comme

mydict = numpy.load('mydict')
mydict[0]['some_key'] 

ne fonctionne pas. J'ai aussi essayé

recdict = dict(mydict)

mais cela n'a pas fonctionné non plus.

Pourquoi numpy ne m'a pas averti lorsque j'ai enregistré le dictionnaire avec numpy.save()?

Existe-t-il un moyen de récupérer les données?

Merci d'avance!

56
andres

Utilisez mydict.item() pour obtenir l'élément de tableau sous la forme d'un scalaire Python).

>>> import numpy as np
>>> np.save('/tmp/data.npy',{'a':'Hi Mom!'})
>>> x=np.load('/tmp/data.npy')
>>> x.item()
{'a': 'Hi Mom!'}
69
unutbu

Les tableaux 0-d peuvent être indexés à l'aide du Tuple vide:

>>> import numpy as np
>>> x = np.array({'x': 1})
>>> x
array({'x': 1}, dtype=object)
>>> x[()]
{'x': 1}
>>> type(x[()])
<type 'dict'>
23
Robert Kern