gpt4 book ai didi

python - python 中使用 numpy.pad 函数出现内存错误

转载 作者:行者123 更新时间:2023-12-01 03:44:30 28 4
gpt4 key购买 nike

我在 python 中读取了一个 csv 文件并创建了一个 4664605 x 4 数组。我想要一个矩阵。因此,我使用 numpy.pad (常量值 = 0)函数来创建 4664605 x 4664605 矩阵。但我有以下错误消息:

Traceback (most recent call last): File "C:\Users\Angelika\Eclipse\Projects\vonNeumann\vonNeumann.py", line 7, in A_new = np.pad(A, ((0,0),(0,4664601)), 'constant',constant_values=(0)) File "C:\Anaconda\lib\site-packages\numpy\lib\arraypad.py", line 1394, in pad newmat = _append_const(newmat, pad_after, after_val, axis) File "C:\Anaconda\lib\site-packages\numpy\lib\arraypad.py", line 138, in _append_const return np.concatenate((arr, np.zeros(padshape, dtype=arr.dtype)), MemoryError

我已经检查了系统的最大大小,以防溢出,但没问题。更具体地说,sys.maxsize = 9223372036854775807,矩阵大小 = 21758539806025。问题是当追加行时一切正常。也就是说,结果是一个 9329210 x 4 的数组。但我无法添加 4664601 列以获得矩阵。我不知道该怎么办。

非常感谢,安吉莉卡

最佳答案

这更像是一个问题,而不是一个答案。但对于注释行来说太长了。

4664605 x 4 数组4664605 x 4664605 矩阵 之间的区别没有多大意义。方形度没有定义矩阵,至少在大多数情况下没有。

向该数组添加许多 0 填充的列的目的是什么?即使您有内存来创建那么大的副本,您是否有足够的内存来保存多个副本(根据数学和许多其他运算的需要)?

错误行:

返回 np.concatenate((arr, np.zeros(padshape, dtype=arr.dtype))

arr 形状必须为 (4664605,4),padshape (4664605, 466401)。因此它尝试创建一个 padshape 大小的 zeros 数组,然后创建一个最终大小的新数组。因此,简单地构建这个需要两个非常大的数组的空间。

直接使用 pad 可能会节省一些空间

res = np.zeros((4664605, 4664605), dtype=arg.dtype)
res[:,:4] = arr

但仍然 - 为什么要制作这么大且大部分为零的数组?

关于python - python 中使用 numpy.pad 函数出现内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39153343/

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