我使用numpy savetxt()
將矩陣的元素保存爲單個文件(我需要按順序打印大量文件)。這方法我發現:numpy savetxt:將矩陣保存爲行
import numpy as np
mat = np.array([[1,2,3],
[4,5,6],
[7,8,9]])
with open('myfile.dat','a') as handle:
np.savetxt(handle, mat.reshape(1,mat.size), fmt='%+.8e')
handle.close()
有2個問題:
1)是savetxt()
最好的選擇?我需要打印1e5到1e7這些東西......我不希望I/O瓶頸實際計算。我猜測每次迭代重新開放文件是一個糟糕的計劃,速度明智。
2)理想的情況下我會印開始的每一行,所以我的輸出可能看起來像一些背景資料:
(N foo mat):
...
6 -2.309 +1.000 +2.000 ...
7 -4.273 +1.000 +2.000 ...
8 -3.664 +1.000 +2.000 ...
...
我可以做到這一點使用np.append()
,但隨後的第一個號碼不會打印作爲INT。 savetxt()
直接可以做這種事嗎?或者我需要一個類似C的fprintf()
?
它看起來不像'to_csv'可以追加到現有文件上。這意味着我必須在RAM中攜帶一個潛在的巨大數據幀並將其轉儲到文件末尾。我想我可以嘗試這種可行性... –
看看http://stackoverflow.com/問題/ 17530542/how-to-add-pandas-data-to-an-existing-csv-file – YXD
我明白了。現在我對'savetxt'解決方案感到滿意。將矩陣複製到DataFrame中以便打印它似乎有點迂迴。 –