2016-02-05 74 views
1

這可能是我的問題矯枉過正,但我​​很好奇答案。python中的硬編碼精確浮點值

我有一個np.float32值的矩陣,我想把它放入一些代碼中。它是50x3,所以我想直接把它放在源代碼中 - 它不會經常改變。這對舍入有點敏感,所以如果可能的話,我想對的數據編碼爲。有沒有一種好的方法可以在保存矩陣格式的同時在源代碼中執行此操作?

我在考慮把[[0xC45B36F3,...],...]和某種編碼方式編碼爲np.float32

回答

2

如果選擇編碼整數值,然後你可以這樣做:

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

爲什麼不使用內建的numpy.save?我用幾個float32輸入試了一下,numpy.load沒有舍入的問題。

或者你有什麼理由不能或不想這樣做?

+0

每一行都與一組獨立的數據相關聯,所以我希望在源代碼中有一個矩陣,這樣就很容易看到每個數據集的更改。 –

1

可以矩陣m轉換成字節:

m.tobytes() 

然後粘貼字節它在你的代碼:

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

後,您可以重建確切的矩陣:

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

沒有任何損失。