给定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表示'本地订单'。意思是,它会在大端和小端机器上被不同地解释 - 或者我错过了一些简单的东西?
答案 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)