7

给定一个numpy数组的原始二进制表示,明确恢复数组所需的完整元数据集是什么?

例如,

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

这是意料之中的(至少事后看来):这里我没有告诉fromstring期待整数,所以它与默认浮点数一起使用。

但在我看来,仅仅指定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这是一个更好的方法。帮助文档字符串显示

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