我正在处理来自大型模型的信息,这意味着我有很多带有两个浮点列的大型ascii文件(比方说X和Y)。但是,每当我必须阅读这些文件时,它需要很长时间,所以我认为将它们转换为二进制文件会使读取过程更快。
我使用uu.encode(ascii_file,binary_file)命令将我的asciifiles转换为二进制文件,并且它工作得很好(实际上,测试了解码部分,我恢复了相同的文件)。
我的问题是:无论如何将二进制文件直接读入python并将数据转换为两个变量(x和y)?
谢谢!
答案 0 :(得分:3)
您没有指定在Python中如何表示浮点列。 cPickle
模块是一种快速通用的解决方案,其缺点是它只创建可从Python读取的文件,并且永远不允许它读取不受信任的数据(从网络接收)。它可能只适用于所有常规数据类型,包括numpy数组。
如果您可以使用numpy并将数据存储在numpy数组中,请查看numpy.save
和numpy.savetxt
以及相应的加载函数,这些函数的性能优于手动提取数据。
array.array
还有将数组数据写入文件的方法,缺点是数组数据是以原生格式编写的,不能从不同的架构中读取。
答案 1 :(得分:1)
查看python的struct module。这可能是您希望用于读取和写入数据的内容。
答案 2 :(得分:0)
我建议代替建议的struct模块,如果你的模型只是浮点/双精度(坐标),你应该看到the array
module,必须比struct
模块中的任何操作都快得多。它的缺点是集合是同质的,你需要在奇数索引中有第一个值,在偶数索引中有第二个值,或者顺序。