numpy的tostring / fromstring ---我需要指定什么来恢复数组

时间:2012-12-02 18:56:05

标签: python numpy portability

给定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
'='

the docs tell me表示'本地订单'。意思是,它会在大端和小端机器上被不同地解释 - 或者我错过了一些简单的东西?

1 个答案:

答案 0 :(得分:3)

sys.byteorder给出了机器的字节序。


然而,正如@ J.F.Sebastain,@ seberg和@jorgeca建议的那样,np.savez是一个更好的方法。 help docstring shows

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

这意味着您可以将字符串content保存到sqlite数据库。

然后,当您从数据库中选择此字符串时,可以使用

将其重新转换为numpy数组
data = np.load(content)