2017-04-26 42 views
0

我需要將numpy數組保存爲原始二進制文件,並根據同事的建議,我知道tostringtofile應該做大致相同的事情。然而,當我運行時tostring與tofile創建原始二進制文件

x=np.load('foo.npy') 
(open('foo_1.dat', 'w')).write(x.T.tostring()) 
x.T.tofile('foo_2.dat') 
np.all(np.fromfile('foo_1.dat') == np.fromfile('foo_2.dat')) 

False被返回。任何人都可以向我解釋爲什麼會出現這種情況,或者如果我做錯了什麼,我可以在哪裏糾正代碼,以使我的最終產品具有同等性質?

編輯: 使用此方法,foo_1.dat和foo_2.dat具有相同的數據類型(float64),但是,形狀不同(tostring = 38497230L,tofile = 38407680L)。 我需要調換程序特定應用程序的文件,而不是使用np.save,因爲我特別需要.dat文件。

+0

我們需要查看更多關於'fromfile'結果的信息。形狀,dtype,甚至是實際的小陣列。你爲什麼要保存轉置?爲什麼不堅持用'foo.npy'工作的'np.save'? – hpaulj

+0

我不知道這是否是問題,但文件應該以二進制模式打開:'open('foo_1.dat','wb')' –

回答

0

我不知道這是不是問題,但該文件應該以二進制>>模式打開:打開( 'foo_1.dat', 'WB')

就是這樣!謝謝!

相關問題