Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 填充大numpy数组_Python_Numpy - Fatal编程技术网

Python 填充大numpy数组

Python 填充大numpy数组,python,numpy,Python,Numpy,另一个numpy阵列处理问题: 我有一个大约2000个固定大小的numpy数组(我知道),包含整数。我想用另一个整数填充数组,使其在所有维度中都被包围。对于整个填充过程,此整数是固定的 example (2D) 1----->000 010 000 我有两个想法,导致这一结果: 创建更大的numpy数组,包含填充值并“切片”填充区域中的旧区域: padded=np.zeros((z+2,x+2,y+2)) padded[1:z+1,1:x+1,1:y+1]=o

另一个numpy阵列处理问题: 我有一个大约2000个固定大小的numpy数组(我知道),包含整数。我想用另一个整数填充数组,使其在所有维度中都被包围。对于整个填充过程,此整数是固定的

example (2D)
1----->000
       010
       000
我有两个想法,导致这一结果:

  • 创建更大的numpy数组,包含填充值并“切片”填充区域中的旧区域:

    padded=np.zeros((z+2,x+2,y+2))
    padded[1:z+1,1:x+1,1:y+1]=olddata
    
  • 使用np.insert或hstack、vstack、dstack添加值:

    padded=np.insert(data,0,0,axis=0)
    padded=np.insert(data,x+1,0,axis=0) etc.
    

  • 问题是,所有这些方法都不到位,无法分配新数组(1.)或复制旧数组(2.)。有没有办法把填充物放在适当的位置?我知道,从numpy 1.7开始。这是numpy.pad模块。但这似乎也使用了某种分配和重写(如我的1.way)。

    您不能在适当的位置添加填充,因为内存布局中没有空间容纳它。不过,您可以采用另一种方式:首先分配填充数组,并在访问未添加的数据时使用视图

    padded = np.empty((2002,2002,2002))
    padded[0] = 0
    padded[-1] = 0
    padded[:,0] = 0
    padded[:,-1] = 0
    padded[:,:,0] = 0
    padded[:,:,-1] = 0
    
    unpadded = padded[1:-1, 1:-1, 1:-1]
    

    你能从填充阵列开始工作吗?@JanneKarila:我不知道如何从填充阵列开始?我有原始数据,在某一点上我必须填充它,或者我没有?如何将原始数据放入NumPy数组?也许您可以在此时将其读入填充中的一个片。@JanneKarila我可以这样做,但我以前需要将填充创建为一个数组,这需要大量的时间和内存(例如np.ones(200020002000)需要近4秒),而不是np.ones您可以使用np.empty和slice赋值来设置填充。