gpt4 book ai didi

python - numpy loadtxt 需要很多时间

转载 作者:太空宇宙 更新时间:2023-11-04 06:24:33 24 4
gpt4 key购买 nike

出于某种原因,我将代码分为两部分;第一部分是用 C 编写的,第二部分是用 python 编写的。我在文件中编写了 C 代码的输出并在 python 中使用它作为我的输入,现在我的问题是当我想将文件加载到 numpy 数组中时大约需要 18 分钟,这很长,我需要减少这段时间。 fie 的大小约为 300MB。

写入文件的 C 代码如下:

struct point {
float fpr;
float tpr;
point(float x, float y)
{
fpr = x;
tpr = y;
}
};
vector<point> current_points;
// filling current_points ......
ofstream files;
files.open ("./allpoints.txt")
for(unsigned int i=0; i<current_points.size(); i++)
files << current_points[i].fpr << '\t' << current_points[i].tpr << "\n";

在 python 中读取文件就像:

with open("./allpoints.txt") as f:
just_comb = numpy.loadtxt(f) #The problem is here (took 18 minutes)

allpoints.txt是这样的(可以看到它是2D维度上一些点的坐标):

0.989703    1
0 0
0.0102975 0
0.0102975 0
1 1
0.989703 1
1 1
0 0
0.0102975 0
0.989703 1
0.979405 1
0 0
0.020595 0
0.020595 0
1 1
0.979405 1
1 1
0 0
0.020595 0
0.979405 1
0.969108 1
...
...
...
0 0
0.0308924 0
0.0308924 0
1 1
0.969108 1
1 1
0 0
0.0308924 0
0.969108 1
0.95881 1
0 0

现在我的问题是,有没有更好的方法来将点 vector 存储在文件中(类似于二进制格式)并在 python 中更快地将其读入 2D numpy 数组?

最佳答案

如果您想要预烘焙库解决方案,请使用 HDF5。如果你想要没有依赖性的更简单的东西,请执行以下操作:

files.write(reinterpret_cast<char*>(current_points.data()),
current_points.size() * sizeof(point));

这将为您提供一个直接写入文件的简单二维 float 数组。然后,您可以使用 [numpy.fromfile()][1] 读取此文件。

关于python - numpy loadtxt 需要很多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28869803/

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