2017-10-19 27 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

相关问题