python中带有numpy.pad函数的内存错误

python中带有numpy.pad函数的内存错误,python,arrays,numpy,out-of-memory,anaconda,Python,Arrays,Numpy,Out Of Memory,Anaconda,我用python读取了一个csv文件,并创建了一个4664605 x 4数组。我想要一个矩阵。因此,我使用numpy.pad(wit constant value=0)函数来创建4664605 x 4664605矩阵。但我有以下错误消息: 回溯(最近一次调用上次):文件 “C:\Users\Angelika\Eclipse\Projects\vonneuman\vonneuman.py”,第7行, 在里面 A_new=np.pad(A,((0,0),(04664601)),“常量”,常量_值=(

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

回溯(最近一次调用上次):文件 “C:\Users\Angelika\Eclipse\Projects\vonneuman\vonneuman.py”,第7行, 在里面 A_new=np.pad(A,((0,0),(04664601)),“常量”,常量_值=(0))文件 “C:\Anaconda\lib\site packages\numpy\lib\arraypad.py”,第1394行,在 衬垫 newmat=_append_const(newmat,pad_after,after val,axis)文件“C:\Anaconda\lib\site packages\numpy\lib\arraypad.py”,第138行,in _附加常数 返回np.concatenate((arr,np.zero(padshape,dtype=arr.dtype)),MemoryError

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

多谢各位,
安吉丽卡

这与其说是答案,不如说是一个问题。但是评论行太长了

4664605 x 4数组
4664605 x 4664605矩阵
之间的区别没有多大意义。平方度不能定义
矩阵
,至少在大多数上下文中是这样

向该数组中添加多个0填充列的目的是什么?即使您有足够的内存创建一个如此大的列,您是否有足够的内存来保存多个副本(如数学和许多其他操作所需)

错误行:

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

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

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

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

但仍然-为什么要制作一个很大的数组,它大部分为零?

请发布您的代码。在87 TB内存附近的某个地方,假设一个4字节的数据类型,您需要构建这个荒谬的数组。您确定您明白您在做什么吗?不,我不明白。非常感谢您宝贵的评论。现在,我也明白了e hpaulj的回答。非常感谢!