python - 如何将没有换行符的大(3-4GB)文件读入 numpy 数组?

标签 python arrays numpy io

我有一个 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/

相关文章:

JavaScript - 类型错误 : Cannot read property 'type' of undefined

qt - QPixmap.loadFromData() 不从 QByteArray 加载图像

python - 如何在 python 中从 3 个数组创建颜色映射

python - 如何使用 boto3 将自定义 EC2 指标发送到 CloudWatch 仪表板?

c - C 中索引 0 处的数组值在循环结束时发生变化

python - 如何将每行中小于中位数的值归零?

python : Geomspace and Logspace do not return true boundaries

python - 将最大 numpy 数组偏移量转换为元组?

python - 取消聚合 Pandas 中的字符串值字段

python - 是否可以让我的 Windows Python 安装知道在 Cygwin 终端内运行时可以使用的额外库?