python 中的硬编码精确浮点值

hard code exact float values in python

这对我的问题来说可能有点矫枉过正,但我​​很好奇答案。

我有一个 np.float32 值矩阵,我想将其放入某些代码中。它是 50x3,所以我想直接把它放在源代码中——它不会经常改变。它对舍入有点敏感,所以我想尽可能精确编码数据。有没有一种在源代码中执行此操作同时还保留矩阵格式的好方法?

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

为什么不使用 numpy.save builtin? I've tried it with several float32 inputs and the numpy.load 没有舍入问题。

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

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

int_data = np.array([[0xC45B36F3, ...],...], dtype=np.uint32)
floats = int_data.view(np.float32)

您可以将矩阵 m 转换为字节:

m.tobytes()  

然后将字节粘贴到代码中:

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

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

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

没有任何损失。