7

配列の生のバイナリ表現を考えると、numpy配列を明確に復元するために必要なメタデータの完全なセットは何ですか?

例えば、

>>> np.fromstring( np.array([42]).tostring())
array([  2.07507571e-322])

これは予想されることです(少なくとも後知恵で):ここでは、fromstringintを期待するように指示していないので、デフォルトのfloatを使用します。

dtype=np.float64しかし、または類似のものを指定するだけで十分な場合と不十分な場合があるように思われます。例えば、

>>> a = np.array([42.])
>>> a.dtype
dtype('float64')
>>> a.dtype.byteorder
'='

ドキュメントによると、これは「ネイティブオーダー」を意味します。つまり、ビッグエンディアンとリトルエンディアンのマシンでは解釈が異なります---それとも単純なものが欠けていますか?

4

1 に答える 1

4

sys.byteorderマシンのエンディアンを与えます。


ただし、@ JFSebastain、@ seberg、@ jorgecaが示唆しているnp.savezように、より良い方法です。ヘルプdocstringは示しています

import io
content = io.BytesIO()
np.savez(content, x=x, y=y)
content.seek(0)

contentこれは、文字列をsqliteデータベースに保存できることを意味します。

次に、データベースからこの文字列を選択すると、次のコマンドを使用してnumpy配列に再変換できます。

data = np.load(content)
于 2012-12-02T23:20:33.550 に答える