Python 如何使用struct-pack方法有效地将一个大的一列CSV浮点文件转换为二进制文件

Python 如何使用struct-pack方法有效地将一个大的一列CSV浮点文件转换为二进制文件,python,performance,python-2.7,struct,pack,Python,Performance,Python 2.7,Struct,Pack,我有一些大的一列CSV包含浮点数。我想使用struct module的pack方法将它们高效地转换为二进制文件,格式为“f” 我所做的是: with open(input_bin_filename, 'wb') as binary: for d in map(float, input_file): binary.write(pack("f", d)) 这是最快的方法还是有任何一种使用map/reduce族方法的线性程序?Numpy有高效的例程:a=loadtxt(“my

我有一些大的一列CSV包含浮点数。我想使用struct module的
pack
方法将它们高效地转换为二进制文件,格式为
“f”

我所做的是:

with open(input_bin_filename, 'wb') as binary:
    for d in map(float, input_file):
        binary.write(pack("f", d))

这是最快的方法还是有任何一种使用map/reduce族方法的线性程序?

Numpy有高效的例程:
a=loadtxt(“myfile.txt”)
()可以解析简单的CSV文件,而
a.tofile(“myfile.bin”)
()可以将其作为二进制转储写入磁盘。其效率的原因是Numpy数组通常在连续的内存块上运行。标题有点含糊不清:您想要一个高效的解决方案,还是想要一个使用
struct.pack
的解决方案?它们可能不是同一件事。@Dietrich我会试试这个,但我更喜欢不依赖numpy的解决方案。@MarkDickinson为什么不明确?struct.pack是否效率低下?@Chris:
struct.pack
在for循环中重复使用会明显低于NumPy,是的。这是一个奇怪的标题,因为您似乎既在询问如何做某事,又通过指定要使用的方法来回答自己,在这种情况下,您指定的方法可能不是最有效的方法。