2015-04-12 23 views
0

我已經寫了一個cython函數使用numpy.array在大數組上執行一些計算,例如數組的大小爲24000x1500。然後我得到了MemoryError什麼是具有float64組件的二維數組的最終大小

我想知道什麼是Python中的float64組件的二維數組的最終大小?

由於我的數組大小,是否發生此錯誤?

我該怎麼做才能避免這個錯誤?

+0

[numpy數組的Python內存使用情況]可能的重複(http://stackoverflow.com/questions/11784329/python-memory-usage-of-numpy-arrays) –

+0

什麼是計算?涉及numpy數組的表達式可能會導致創建幾個臨時數組來保存中間結果。 –

回答

1

由於64位浮點佔用8個字節,因此您可以輕鬆估計24,000 * 1500 * 8 = 288,000,000字節的下限,大約爲0.3 GB。我不知道由numpy數組創建的開銷,但我猜這對於數組的大小並不重要。

根據我在上面評論中鏈接到的答案,您還可以使用arr.numbytes找到大小。它還返回數組元素使用的內存。

我可以看到如何使用這麼多的內存程序可以拋出MemoryError。做一些記憶分析來發現它是否是你的大陣列(可能)或其他東西吃了你的記憶。或者購買更多的內存。

相關問題