预测后有效写入文件 python
Writing to a file efficiently after prediction python
我是编程新手,正在尝试减少将数据写入文件所需的时间,但我发现写入部分是主要问题。
以下是我的机器学习程序代码的一部分:
filename="data.csv"
f=open(filename,"w")
headers="row,open\n"
f.write(headers)
for i in range (0,55970):
score=rf.predict(edit[i].reshape(1, -1))
score=str(score).replace('[','').replace(']','')
f.write(str(i) +","+ score +"\n")
f.close()
我知道我应该在获得所有数据后才写入数据,但我不确定如何去做 - 因为我只知道 f.write()。我是否为我的预测和 return 分数创建一个函数,然后创建一个列表来存储所有分数并将其写入? (如果可能的话)
[编辑]
score=rf.predict(edit)
with open('data.csv', 'w',newline='') as f:
writer = csv.writer(f)
writer.writerow(['row', 'open'])
for i in range(55970):
writer.writerow([i,str(score[i])])
^ 根据新建议添加。发现我应该只做预测,然后写下显着缩短时间的行!
感谢您的帮助!!
CSV 模块是一个更好的工具。更具体地说,writerows()
就是您要查找的内容。
https://docs.python.org/3/library/csv.html#csv.csvwriter.writerows
这是文档中的示例:
import csv
with open('some.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerows(someiterable)
import csv
with open('data.csv', 'w') as csv_file:
writer = csv.writer(csv_file)
writer.writerow(['row_id', 'open_flag'])
for i in range(55970):
score = str(rf.predict(edit[i].reshape(1, -1)))
score.replace('[', '').replace(']', '')
writer.writerow([i, score])
我是编程新手,正在尝试减少将数据写入文件所需的时间,但我发现写入部分是主要问题。
以下是我的机器学习程序代码的一部分:
filename="data.csv"
f=open(filename,"w")
headers="row,open\n"
f.write(headers)
for i in range (0,55970):
score=rf.predict(edit[i].reshape(1, -1))
score=str(score).replace('[','').replace(']','')
f.write(str(i) +","+ score +"\n")
f.close()
我知道我应该在获得所有数据后才写入数据,但我不确定如何去做 - 因为我只知道 f.write()。我是否为我的预测和 return 分数创建一个函数,然后创建一个列表来存储所有分数并将其写入? (如果可能的话)
[编辑]
score=rf.predict(edit)
with open('data.csv', 'w',newline='') as f:
writer = csv.writer(f)
writer.writerow(['row', 'open'])
for i in range(55970):
writer.writerow([i,str(score[i])])
^ 根据新建议添加。发现我应该只做预测,然后写下显着缩短时间的行!
感谢您的帮助!!
CSV 模块是一个更好的工具。更具体地说,writerows()
就是您要查找的内容。
https://docs.python.org/3/library/csv.html#csv.csvwriter.writerows
这是文档中的示例:
import csv
with open('some.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerows(someiterable)
import csv
with open('data.csv', 'w') as csv_file:
writer = csv.writer(csv_file)
writer.writerow(['row_id', 'open_flag'])
for i in range(55970):
score = str(rf.predict(edit[i].reshape(1, -1)))
score.replace('[', '').replace(']', '')
writer.writerow([i, score])