我是編程新手,正在嘗試減少將數據寫入文件所需的時間,但我發現寫入部分是主要問題。以下是我的機器學習程序代碼的一部分: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()。我是否為我的預測和返回分數創建一個函數,然后創建一個列表來存儲所有分數并將其寫入?(如果可能的話)[編輯]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])])^ 根據新建議添加。發現我應該只做預測,然后寫下顯著縮短時間的行!感謝您的幫助??!
1 回答

汪汪一只貓
TA貢獻1898條經驗 獲得超8個贊
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])
添加回答
舉報
0/150
提交
取消