gpt4 book ai didi

python - 在 Python 中读取具有不同列数的大文件的最快方法

转载 作者:太空狗 更新时间:2023-10-30 02:26:05 24 4
gpt4 key购买 nike

我在文件 data.txt 中有一个 float 数据集,其中每行包含可变数量的列。例如:

    3.0 2.5
1.1 30.2 11.5
5.0 6.2
12.2 70.2 14.7 3.2 1.1

为了阅读它,我可以在 Matlab 中轻松组合使用 fopenfscanf。最后一个读取数据并将其转换为按列顺序排列的数组,如下所示:

    array = [3.0 2.5 1.1 30.2 11.5 5.0 6.2 12.2 70.2 14.7 3.2 1.1]'

我想将我的 Matlab 代码翻译成 Python。但是由于没有 Python 内置函数可以替代 Matlab 的 fscanf,因此我编写了以下 Python 代码,以与所述相同的方式读取和 reshape 数据:

    from numpy import *

data = []
with open('data.txt') as file:
for line in file:
cline = line.split()
data = data + cline

data = array(data)

这行得通,但是我的一些数据集最多可以有 200,000 行,而且我展示的 Python 代码对于读取大型数据集来说非常慢(大约 10 分钟)。另一方面,Matlab 的 fscanf 只需几秒钟或更短时间即可完成这项工作。那么,有没有比我的代码在 Python 中执行此操作更快(优化)的方法?

如果有任何建议,我将不胜感激。

最佳答案

在几千行之后,这会做大量的额外工作:

    data = data + cline

只需data.extend(cline)。 (或者 .append(),如果你想知道哪些数字一起出现在一行中。)

考虑存储 double 而不是文本:

    data.extend([float(c) for c in line.split()])

关于python - 在 Python 中读取具有不同列数的大文件的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46330151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com