【问题标题】:Why can python lists hold more data than numpy arrays?为什么 python 列表可以比 numpy 数组保存更多的数据?
【发布时间】: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


【解决方案1】:

为一个 numpy 数组分配内存,从一开始就不要创建一个列表。

memmap 不是必需的,因为原始列表适合内存。

【讨论】:

    猜你喜欢
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 2012-09-09
    • 2011-08-22
    相关资源
    最近更新 更多