我有一个 3.3gb 的文件,其中包含一长行。文件中的值以逗号分隔,并且可以是 float 或整数。大多数值为 10
。我想将数据读入一个 numpy 数组。目前,我正在使用 numpy.fromfile
:
>>> import numpy
>>> f = open('distance_matrix.tmp')
>>> distance_matrix = numpy.fromfile(f, sep=',')
但是现在已经运行了一个多小时,而且它目前正在使用 ~1 Gig 内存,所以我认为它还没有运行到一半。
有没有更快的方法来读取单行的大数据?
最佳答案
这可能应该是评论...但我没有足够的声誉来发表评论。
我已经通过 h5py 使用 hdf 文件,其大小超过 200 g,处理时间非常短,大约一两分钟,用于文件访问。此外,hdf 库支持 mpi 和并发访问。
这意味着,假设您可以将原始单行文件格式化为适当分层的 hdf 文件(例如,为每个“大”数据段创建一个组),您可以使用 hdf 的内置功能来利用多个数据的核心处理利用 mpi 在核心之间传递您需要的任何数据。
您需要小心处理您的代码并了解 mpi 如何与 hdf 一起工作,但它会无休止地加快速度。
当然,所有这些都取决于将数据放入 hdf 文件的方式,以便您可以利用 mpi...所以这可能不是最实用的建议。
关于python - 如何将没有换行符的大(3-4GB)文件读入 numpy 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20044286/