Ответ 1
Используйте mydict.item()
, чтобы получить элемент массива как скаляр Python.
>>> import numpy as np
>>> np.save('/tmp/data.npy',{'a':'Hi Mom!'})
>>> x=np.load('/tmp/data.npy')
>>> x.item()
{'a': 'Hi Mom!'}
Случилось так, что я (по ошибке) сохранил словарь с командой numpy.save()
(никаких сообщений об ошибках), и теперь мне нужно восстановить данные в словаре. Когда я загружаю его с помощью numpy.load()
, он имеет тип (numpy.ndarray
) и равен 0-d, поэтому он больше не является словарем, и я не могу получить доступ к данным в нем, массивы 0-d не являются индексными поэтому делать что-то вроде
mydict = numpy.load('mydict')
mydict[0]['some_key']
не работает. Я также пробовал
recdict = dict(mydict)
но это тоже не сработало.
Почему numpy не предупредил меня, когда я сохранил словарь с numpy.save()
?
Есть ли способ восстановить данные?
Спасибо заранее!
Используйте mydict.item()
, чтобы получить элемент массива как скаляр Python.
>>> import numpy as np
>>> np.save('/tmp/data.npy',{'a':'Hi Mom!'})
>>> x=np.load('/tmp/data.npy')
>>> x.item()
{'a': 'Hi Mom!'}
0-d массивы могут быть проиндексированы с использованием пустого набора:
>>> import numpy as np
>>> x = np.array({'x': 1})
>>> x
array({'x': 1}, dtype=object)
>>> x[()]
{'x': 1}
>>> type(x[()])
<type 'dict'>