python中的硬编码精确浮点值

时间:2016-02-05 16:30:27

标签: python numpy precision

这对我的问题可能有点过头了,但我很好奇答案。

我有一个np.float32值矩阵,我希望将其放入一些代码中。它是50x3所以我想直接把它放在源代码中 - 它不会经常发生变化。它对舍入有点敏感,所以如果可能的话我想对数据完全进行编码。有没有一种好的方法在源代码中执行此操作同时还保留矩阵格式?

我正在考虑放置[[0xC45B36F3,...],...]并以某种方式将其编码为np.float32

3 个答案:

答案 0 :(得分:2)

为什么不使用内置的numpy.save?我已经尝试了几个float32输入,而numpy.load没有舍入问题。

或者你有什么理由不能或不想那样做?

答案 1 :(得分:2)

如果您选择对整数值进行编码,则可以执行以下操作:

swf

答案 2 :(得分:1)

您可以以字节转换矩阵m

m.tobytes()  

然后将其粘贴到代码中:

data=b'\x34f\xd3.......paste the 4*50*3 bytes here ......\x12'

在您可以重建精确矩阵之后:

m=matrix(frombuffer(data,float32).reshape(50,3)) 

没有任何损失。