【发布时间】:2014-02-18 13:58:37
【问题描述】:
假设我创建了一个数组:
a=np.ones((21600,13,3,128),dtype=complex)
我遇到内存错误。
如果我将数组大小减半(n.b 这需要 >10 分钟在我的机器上创建):
b=np.ones((10800,13,3,128),dtype=complex)
以 GB 为单位的大小为:
b.nbytes/1024**3 = 0.803375244140625 GB
这远低于我笔记本电脑的 RAM 容量 (2GB) - 因此,我认为创建“a”应该可行。是什么限制了我处理这么大的数组?
理想情况下,我想用dtype=complex 创建一个形状为(86400,13,3,128) 的数组。
有什么方法可以做到这一点而不拆分它?
【问题讨论】:
-
等等,
a和b具有相同的尺寸和相同的dtype? -
听起来像是在交换 - 你在终端中检查过 top 吗?还是你在用windows?
-
抱歉,复制和粘贴技能不佳.. 更新了问题。
-
内存碎片可能会起作用,尤其是。使用 32 位 NumPy。您需要 1.6GB 的 连续 虚拟内存用于数组
a。 -
在装有 Windows 的 4GB 笔记本电脑上运行 numpy,我很少能在单个阵列中获得超过 2GB 的空间,其余的被操作系统占用。 Windows 使用了大量的 PC 资源。我最近花了不到 100 美元,12GB 的草看起来更绿了......