[英]Why does numpy crash instantly upon an array insertion?
我在我的一个项目中遇到了一些奇怪的行为。 具体来说,运行此代码时:
import numpy as np
coefficientMatrix = np.zeros([12500, 43750])
coefficientMatrix[229, 798] = 1.0942131827
我的Python进程崩溃了:
这里有什么问题?
系统规格(如果在此处相关):Windows 7 x64、8Gb RAM,Python 2.7 32位,numpy 1.9.2。
在分配给系数np.zeros
的元素而不是使用np.zeros
创建数组时会出现MemoryError
的原因是,大多数操作系统(包括Windows 7)都使用惰性内存分配 。
使用np.zeros
实例化数组时,Windows仅分配虚拟内存地址空间,而不分配物理RAM。 但是,当您实际尝试写入该内存块时,操作系统将需要找到足够的物理内存来容纳该阵列。 如果这样做失败,您将得到MemoryError
。
由于您的Python进程是32位的, 因此它最多可以处理4GB的内存(甚至可能更少) 。 一个12500x43750的float64值数组将占用4.375GB的内存,因此使用32位Python根本无法拥有那么大的数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.