【发布时间】:2016-08-19 06:12:04
【问题描述】:
我有一个很大的 python 列表(16 GB),我想将它转换为 numpy 数组,就地。我买不起这种说法
huge_array = np.array(huge_list).astype(np.float16)
我正在寻找一些有效的方法来将这个 huge_list 转换为 numpy array 而不会复制它。
谁能提出一个有效的方法来做到这一点?这可能涉及先将列表保存到磁盘,然后将其加载为 numpy 数组,我可以接受。
我将非常感谢任何帮助。
编辑 1:huge_list 是在运行时创建的内存中 python 列表,因此它已经占用了 16GB。我需要将其转换为numpy float16 数组。
【问题讨论】:
-
你排除了np.save和np.load吗?
-
那个
np.array方法耗时太长,还是会产生内存错误? -
我关心的是内存,而不是速度。所以 np.array 很可能会抛出内存错误。 @DanPatterson huge_list 尚未在磁盘上,它是在运行时生成的内存中,然后我必须将其转换为 numpy float16 数组
-
@Ahmed:生成列表的原因是什么?你能把它直接生成到一个数组中吗?
-
@Eric 该列表正在逐步生成,我们没有提前知道它的大小。所以它是由 list.append() 方法生成的。由于 numpy 数组是不可变的,因此没有必要直接创建 numpy 数组,因为它不会节省内存。
标签: python arrays list numpy in-place