ti-enxame.com

recuperar dict da matriz numpy 0-d

O que aconteceu foi que eu (por engano) salvei um dicionário com o comando numpy.save() (nenhuma mensagem de erro é exibida) e agora preciso recuperar os dados no dicionário. Quando carrego com numpy.load(), ele tem o tipo (numpy.ndarray) E é 0-d, portanto, não é mais um dicionário e não consigo acessar os dados nele, 0- matrizes d não são capazes de indexar, fazendo algo como

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

não funciona Eu também tentei

recdict = dict(mydict)

mas isso também não funcionou.

Por que numpy não me avisou quando eu salvei o dicionário com numpy.save()?

Existe uma maneira de recuperar os dados?

Desde já, obrigado!

56
andres

Use mydict.item() para obter o elemento do array como um Python escalar.

>>> 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

Matrizes 0-d podem ser indexadas usando a Tupla vazia:

>>> 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