我已經將一段matlab代碼移植到python中,並且遇到了效率問題。matlab到python端口優化
例如,又來了一個片段:
G = np.vstack((Gx.toarray(), Gy.toarray(), Gd1.toarray(), Gd2.toarray()))
這裏所有元素堆疊是通過22500 22500 sparce矩陣。它直接死在我的Windows 64位機器上出現以下錯誤:
return _nx.concatenate([atleast_2d(_m) for _m in tup], 0)
MemoryError
我是很新的Python中,有沒有對這種優化的最佳做法的任何好文章?任何關於numpy如何與內存配合的信息?
就我所知,以某種壓縮格式存儲的sparce矩陣,佔用的空間少得多,但需要花費更多的時間來處理。
Thx!
你期待一個密集或稀疏矩陣/數組作爲輸出? – Divakar
@Divakar輸出是稀疏的 – Anton
最佳的優化建議是 - 不要嘗試它,直到你的代碼工作。內存錯誤意味着這些密集陣列中的一個或多個佔用了太多的空間,遠遠超過了稀疏矩陣。這是一個嚴格的限制。速度是一個軟的。 – hpaulj