1

我正在处理来自大型模型的信息,这意味着我有很多带有两个浮点列的大型 ascii 文件(比如说 X 和 Y)。但是,每当我必须读取这些文件时,都需要很长时间,所以我想也许将它们转换为二进制文件会使读取过程更快。

我使用 uu.encode(ascii_file,binary_file) 命令将我的 asciifile 转换为二进制文件,并且效果很好(实际上,测试了解码部分,我恢复了相同的文件)。

我的问题是:有没有办法直接将二进制文件读入 python 并将数据放入两个变量(x 和 y)?

谢谢!

4

3 回答 3

3

您没有指定浮点列在 Python 中的表示方式。该cPickle模块是一个快速的通用解决方案,其缺点是它创建的文件只能从 Python 读取,并且永远不应允许它读取不受信任的数据(从网络接收)。它可能只适用于所有常规数据类型,包括 numpy 数组。

如果您可以使用 numpy 并将数据存储在 numpy 数组中,请查看numpy.savenumpy.savetxt以及相应的加载函数,它应该提供优于手动提取数据的性能。

array.array也有将数组数据写入文件的方法,缺点是数组数据是以本机格式写入的,无法从不同的架构中读取。

于 2012-09-29T16:45:09.877 回答
1

查看 python 的struct 模块。这可能是您想要用于读取和写入数据的内容。

于 2012-09-29T16:37:20.873 回答
0

我建议不要使用建议的结构模块,如果您的模型只是浮点数/双精度(坐标),您应该看到模块,必须比模块中array任何操作快得多struct。它的缺点是集合是同质的,您需要在奇数索引中具有第一个值,在偶数索引中具有第二个值,或者顺序。

于 2012-09-29T16:40:42.600 回答