我正在運行一些模擬過程太慢,因此我對我的代碼進行了剖析,發現超過90%的時間花在將(2D)numpy數組轉換爲字符串,如:將numpy數組轉換爲字符串的最有效方法
arr = np.ones(25000).reshape(5000,5)
s = '\n'.join('\t'.join([str(x) for x in row]) for row in arr]
我嘗試了很多不同的解決方案(使用地圖,將使用astype(STR)的陣列,鑄造到一個列表),但大多數只給了邊際改善。
最終我放棄了試圖將數組轉換爲字符串,並使用np.save(arr)
,這給了一個2000X(!)加速其保存到自身的文件。有沒有辦法將數組寫成具有類似性能的文本文件?
是的,這就是我最終做的 - 每個模擬只需要大約1.5毫秒,然後轉換爲一個字符串需要大約500毫秒。 – 2015-02-10 18:39:18
那麼 - 你的問題解決了嗎?如果不是這樣:您需要執行多少次這些短模擬?什麼是輸出文件?對於人類還是機器?這些輸出文件有多大? I/O是一個限制因素嗎? – 2015-02-10 18:40:51
是的,問題解決了。我只是想知道是否有一種方法可以將numpy數組寫入字符串,其性能與np.save(fn,arr)相同。 – 2015-02-10 18:42:55