web-dev-qa-db-ja.com

0-d numpy配列からdictを回復します

何が起こったのか(誤って)コマンドnumpy.save()でディクショナリを保存し(エラーメッセージは表示されません)、ディクショナリのデータを回復する必要があります。 numpy.load()でロードすると、タイプは(_numpy.ndarray_)で0-dになるため、ディクショナリではなくなり、データにアクセスできなくなります0-d配列はインデックス可能ではないので、次のようなことをします

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

動作しません。私も試しました

_recdict = dict(mydict)
_

しかし、それもうまくいきませんでした。

辞書をnumpy.save()で保存したときに、numpyが警告を表示しなかったのはなぜですか?

データを回復する方法はありますか?

前もって感謝します!

56
andres

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!'}
69
unutbu

空のタプルを使用して、0-d配列にインデックスを付けることができます。

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