【发布时间】:2019-07-24 10:57:35
【问题描述】:
对不起,我觉得这可能是一个基本问题,但我没有找到任何“解决方案”。
我正在用大量数据填充python 列表,最后想将其转换为numpy.array 以进行进一步处理。
但是,当我调用 numpy.asarray(my_list) 时,我收到内存不足错误。为什么会这样?是不是因为numpy.array对象存储在连续的内存块中,内存空间不够?
那么,我该如何最好地处理如此庞大的数据量?我想numpy 肯定是要走的路,所以我有点好奇,我可以用简单的list 对象处理这样的卷,但不能用我目前的numpy 方法。
再次重复我最重要的问题:我怎样才能最好地处理适合pythonlists 的数据(所以我想总的来说它仍然适合我的记忆),但不能转换为numpy.array ?
谢谢!
【问题讨论】:
-
请记住列表和数组必须同时在内存中。所以它不适合并不意味着数组在内存中比列表大。
-
这是一个好点,所以你假设我的数据大于我内存的一半?我猜一个(唯一的)解决方法是直接使用 numpy 数组,并使用 concat 作为追加?
-
如果你能说出你有多少个数据,以及你想用它做什么,那将会很有帮助。因为有许多不同的方法可以处理大数据(其中大多数基于不同时将所有数据都存储在内存中)。
-
我使用类似于图像的数据,除了它的网格不是浮动的,我有大约 1.000.000 个大小为 28x28 的样本。
-
但是您可以使用 memmap 和 numpy (docs.scipy.org/doc/numpy/reference/generated/numpy.memmap.html) 来处理太大而无法放入内存的数组。
标签: python arrays numpy memory out-of-memory