По какой-то причине я разбил свой код на 2 части; первая часть написана на C и вторая часть с python. Я написал вывод кода C в файле и использовал его в python в качестве моего ввода, теперь моя проблема в том, когда я хочу загрузить файл в массив numpy, занимает около 18 минут, что очень много, и мне нужно уменьшить это время. размер fie составляет около 300 МБ.numpy loadtxt занимает так много времени
код 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
Теперь, мой вопрос в том, является ли это re лучший способ сохранить вектор точек в файле (что-то вроде двоичного формата) и быстрее прочитать его в python в 2D-массив numpy?
У Pandas есть более быстрый загрузчик 'csv'. – hpaulj
http://stackoverflow.com/questions/15096269/the-fastest-way-to-read-input-in-python/15097561#15097561 –