2017-10-19 28 views

回答

6

我想你正在使用Mac。 OSX將自動使用所有可用磁盤空間作爲虛擬內存。所以也許你有一個biiiiiiig磁盤?

此代碼在Linux上導致MemoryError

+0

唉唉。所以這是一個操作系統的事情。 – user3813674

1

我在我的Mac(操作系統10.13,16GB RAM,512GB SSD)上運行了這個程序,並且獲得了與您相同的成功結果。

This comment似乎是一個可能的答案。 總結:由於您使用的是zeros(),因此當矩陣的每個單元都具有相同的值時,不需要佔用4個字節。相反,在幕後,numpy可以明確地在存儲器中存儲矩陣中的不是等於公共值(在這種情況下爲零)的所有值。

值得注意的是,運行np.random.rand(1000000000, 3000)會在我的Mac上造成一些破壞,它與zeros()的功能相同,但會用實際數據填充矩陣。 RAM變得最大,然後開始使用交換分區。

之前np.random.rand()Before np.random

np.random.rand()During np.random

相關問題