【发布时间】:2017-11-05 12:44:07
【问题描述】:
我是 python 新手,开始使用 numpy。我正在遵循纸上的算法,我的数据集需要一个维度为 100 万 * 100 万的数组。
确切的代码是larray(np.random.normal(0, sigma**2, size=(794832, 794832))
虽然我有 16GB 内存,但 numpy 会在创建时尝试将数组加载到内存中,因此我得到了 memoryerror。我尝试使用 lazyarray 进行延迟初始化,但仍然无法正常工作。
有没有办法创建一个使用文件系统而不是内存的数组?
提前致谢。
【问题讨论】:
-
您需要超过 4 TB 的 RAM。我认为您没有足够的交换空间。
-
您不可能在消费级 PC 上存储包含一万亿个元素的数组。即使您使用辅助内存,您也需要一个 TB 级硬盘。你实际上想用 10^6 x 10^6 数组做什么?这可能是 XY 问题
-
@clockwatcher 即使您在硬盘上存储了万亿元素数组,您也需要 TB 的存储空间。压缩也无济于事,因为它是随机数据。
-
感谢大家的评论。我忘了提到我是数据科学领域的新手,我有一个来自 db 的数据。另外,我在维度上犯了一个错误。它是
4000 * 794832。我还需要 TB 空间吗?
标签: python numpy memory memory-management out-of-memory