gpt4 book ai didi

python - 将 Python 列表就地转换为 Numpy 数组

转载 作者:太空宇宙 更新时间:2023-11-03 14:10:21 25 4
gpt4 key购买 nike

我有一个巨大的 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.array(huge_list, dtype=np.float16) 会更快,因为它只复制列表一次而不是两次


你可能不需要担心复制这个副本,因为副本比原来的小很多:

>>> x = [float(i) for i in range(10000)]
>>> sys.getsizeof(x)
83112
>>> y = np.array(x, dtype=np.float16)
>>> sys.getsizeof(y)
20096

但这还不是最糟糕的——对于 python 列表,列表中的每个数字都在占用自己的内存:

>>> sum(sys.getsizeof(i) for i in x)
240000

所以 numpy 数组小了约 15 倍!

关于python - 将 Python 列表就地转换为 Numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39032200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com