【发布时间】:2020-01-16 18:27:03
【问题描述】:
我在 Windows 10 上使用带有 Python3 的 jupyter notebook。我的计算机有 8GB RAM,并且至少有 4GB 的 RAM 是空闲的。
但是当我想用这个命令制作一个大小为 6000*6000 的 numpy ndArray 时:
np.zeros((6000, 6000), dtype='float64')
我得到了这个:Unable to allocate array with shape (6000, 6000) and data type float64
我认为这不能使用超过 100MB 的 RAM。 我试图改变号码,看看会发生什么。我可以制作的最大数组是(5000,5000)。我在估计我需要多少 RAM 时犯了错误吗?
【问题讨论】:
-
这似乎是您操作系统上硬编码的限制。我不确定 windows 环境,但这里有解决方案:stackoverflow.com/questions/57507832/… 这似乎在 ubuntu 上解决了同样的问题。我建议你试试那个。
-
@nima:6K*6K 浮点数(每个 8 字节)将是 3600 万 * 8 字节 = 只有 288MB,这在大多数 >= 4GB 的笔记本电脑上都可以。但另一个问题是关于总大小为 283 GB 的 3D 数组,即大多数笔记本电脑的 1000 倍大和 >> 物理内存。
-
检查 numpy ndarray 实际占用多少内存的明显方法是在普通 Python 控制台(不是 Jupyter)下运行,创建 ndarray,然后查看分配了多少内存。此外,如果它在控制台下工作并在 Jupyter 下失败,那么您知道这是由于 Jupyter 或其配置造成的。
标签: python numpy memory jupyter-notebook ipython