這可能是我的問題矯枉過正,但我很好奇答案。python中的硬編碼精確浮點值
我有一個np.float32
值的矩陣,我想把它放入一些代碼中。它是50x3,所以我想直接把它放在源代碼中 - 它不會經常改變。這對舍入有點敏感,所以如果可能的話,我想對的數據編碼爲。有沒有一種好的方法可以在保存矩陣格式的同時在源代碼中執行此操作?
我在考慮把[[0xC45B36F3,...],...]和某種編碼方式編碼爲np.float32
。
這可能是我的問題矯枉過正,但我很好奇答案。python中的硬編碼精確浮點值
我有一個np.float32
值的矩陣,我想把它放入一些代碼中。它是50x3,所以我想直接把它放在源代碼中 - 它不會經常改變。這對舍入有點敏感,所以如果可能的話,我想對的數據編碼爲。有沒有一種好的方法可以在保存矩陣格式的同時在源代碼中執行此操作?
我在考慮把[[0xC45B36F3,...],...]和某種編碼方式編碼爲np.float32
。
如果選擇編碼整數值,然後你可以這樣做:
int_data = np.array([[0xC45B36F3, ...],...], dtype=np.uint32)
floats = int_data.view(np.float32)
爲什麼不使用內建的numpy.save
?我用幾個float32輸入試了一下,numpy.load
沒有舍入的問題。
或者你有什麼理由不能或不想這樣做?
可以矩陣m
轉換成字節:
m.tobytes()
然後粘貼字節它在你的代碼:
data=b'\x34f\xd3.......paste the 4*50*3 bytes here ......\x12'
後,您可以重建確切的矩陣:
m=matrix(frombuffer(data,float32).reshape(50,3))
沒有任何損失。
每一行都與一組獨立的數據相關聯,所以我希望在源代碼中有一個矩陣,這樣就很容易看到每個數據集的更改。 –