Python:如何读取列数不均匀的数据文件

标签 python file numpy

我的一个 friend 需要阅读大量格式化的数据(大约 18000 个数据集),这很烦人。具体来说,数据应该是 8 列和大约 8000 行数据,但数据以 7 列的形式提供,最后一个条目溢出到下一行的第一列。

此外,每 ~30 行只有 4 列。这是因为某些上游程序正在将 200 x 280 阵列 reshape 为 7x8120 阵列。

我的问题是:我们如何将数据读入 8x7000 数组。当列数不均匀时,我常用的 np.loadtxt 和 np.genfromtxt 库会失败。

请记住,性能是一个因素,因为必须为 ~18000 个数据文件完成此操作。

这是典型数据文件的链接: http://users-phys.au.dk/hha07/hk_L1.ref

最佳答案

我刚刚想到的更简单的方法:

with open("hk_L1.ref") as f:
    data = numpy.array(f.read().split(), dtype=float).reshape(7000, 8)

这首先将数据作为一维数组读取,完全忽略所有换行符,然后我们将其整形为所需的形状。

虽然我认为该任务无论如何都会受 I/O 限制,但如果重要的话,这种方法应该使用很少的处理器时间。

关于Python:如何读取列数不均匀的数据文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9823037/

相关文章:

python - 创建数据透视表

Python + Django + VirtualEnv + Windows

python - Python封装实例字段的方式

python - scrapy中是否可以动态创建管道?

file - 在不立即将整个文件加载到内存中的情况下,分块读取大文件的最有效方法是什么?

c++ - Linux 配置文件库

python - SQLAlchemy session 的上下文/范围是否需要非自动对象/属性过期?

c++ - 如果找到给定的单词,则保存下一个单词 (C++)

python - 在 Python 中计算 Fiedler 向量

python - 混洗结构化数组(记录数组)