のいくつかの追加機能がある場合を除き、私はnp.save
とnp.load
にこだわっお勧めしたいですあなたが必要とするピクルス。それで、np
の同義語の1つで、pickle
を直接使用するのではなく、混乱を避けることができます。
============
文書化されていないnp.loads
があります。 pickle.loads
の別の名前です。
In [573]: np.loads
Out[573]: <function _pickle.loads>
In [574]: np.loads??
Signature: np.loads(data, *, fix_imports=True, encoding='ASCII', errors='strict')
np.ma.loads
より多くのドキュメントを持っていますが、ちょうどである:
def loads(strg):
...
return pickle.loads(strg)
np.load
は通常の配列でないもののためにpickle
を使用しますが、np.save
形式から独自のロードを実行します。ピクルスオブジェクトについては、そのドキュメントの内容を参照してください。混乱を招く。アレイのpickle.dump
はnp.save
を使用します。つまり、ndarray
のピクルス・フォーマットはsave
です。
そうそこnp.load
とnp.loads
の関係はあるが、それはpickle.load
とpickle.loads
間のと全く同じではありません。
================
np.dumps
ありませんが、そこにあるnp.ma.dumps
In [584]: d=np.ma.dumps(foo)
In [585]: d
Out[585]: b'\x80\x03cnumpy.core.multiarray\n_reconstruct\nq\x00cnumpy\nndarray\nq\x01K\x00\x85q\x02C\x01bq\x03\x87q\x04Rq\x05(K\x01K\x03\x85q\x06cnumpy\ndtype\nq\x07X\x02\x00\x00\x00i4q\x08K\x00K\x01\x87q\tRq\n(K\x03X\x01\x00\x00\x00<q\x0bNNNJ\xff\xff\xff\xffJ\xff\xff\xff\xffK\x00tq\x0cb\x89C\x0c\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00q\rtq\x0eb.'
In [586]: np.loads(d)
Out[586]: array([1, 2, 3])
In [587]: np.ma.loads(d)
Out[587]: array([1, 2, 3])
In [588]: import pickle
In [589]: pickle.loads(d)
Out[589]: array([1, 2, 3])
保存するためにピクルスインターフェイスを使用し、アレイをロードしてください:
In [594]: np.ma.dump(foo,open('test.pkl','wb'))
In [595]: np.load('test.pkl')
Out[595]: array([1, 2, 3])
In [600]: pickle.load(open('test.pkl','rb'))
Out[600]: array([1, 2, 3])