Search code examples
pythondictionaryloadnumpysave

recover dict from 0-d numpy array


What happened is that I (by mistake) saved a dictionary with the command numpy.save() (no error messages shown) and now I need to recover the data in the dictionary. When I load it with numpy.load() it has type (numpy.ndarray) and is 0-d, so it is not a dictionary any more and I can't access the data in it, 0-d arrays are not index-able so doing something like

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

doesn't work. I also tried

recdict = dict(mydict)

but that didn't work either.

Why numpy didn't warn me when I saved the dictionary with numpy.save()?

Is there a way to recover the data?

Thanks in advance!


Solution

  • Use mydict.item() to obtain the array element as a Python scalar.

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