2017-04-26 37 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')

就是这样!谢谢!