Python numpy数组-使用np.concatenate或np.insert预先结束并将零行追加到ndarray

Python numpy数组-使用np.concatenate或np.insert预先结束并将零行追加到ndarray,python,arrays,numpy,insert,concatenation,Python,Arrays,Numpy,Insert,Concatenation,我是numpy的新手,我可能会问一个愚蠢的问题,所以如果这不是一个好问题或者这个问题需要进一步澄清,我会提前道歉 任务 例如,我将一个图像表示为一个大小为(10,20,3)的数据数组,我试图通过在图像的开头和结尾插入1px将数组的大小更改为(12,20,3)。从本质上讲,我试图通过在图像的顶部和底部填充来调整图像大小 这基本上就是我试图实现的,用更小维度的数组表示 原始阵列 [ [[255. 255. 255.] [255. 255. 255.] [255. 255. 255.] [

我是numpy的新手,我可能会问一个愚蠢的问题,所以如果这不是一个好问题或者这个问题需要进一步澄清,我会提前道歉

任务

例如,我将一个图像表示为一个大小为(10,20,3)的数据数组,我试图通过在图像的开头和结尾插入1px将数组的大小更改为(12,20,3)。从本质上讲,我试图通过在图像的顶部和底部填充来调整图像大小

这基本上就是我试图实现的,用更小维度的数组表示

原始阵列

[ [[255. 255. 255.]
  [255. 255. 255.]
  [255. 255. 255.]
  [255. 255. 255.]]

 [[255. 255. 255.]
  [255. 255. 255.]
  [255. 255. 255.]
  [255. 255. 255.]]]
[[[  0.   0.   0.]
  [  0.   0.   0.]
  [  0.   0.   0.]
  [  0.   0.   0.]]

 [[255. 255. 255.]
  [255. 255. 255.]
  [255. 255. 255.]
  [255. 255. 255.]]

 [[255. 255. 255.]
  [255. 255. 255.]
  [255. 255. 255.]
  [255. 255. 255.]]

 [[  0.   0.   0.]
  [  0.   0.   0.]
  [  0.   0.   0.]
  [  0.   0.   0.]]]
修改的数组

[ [[255. 255. 255.]
  [255. 255. 255.]
  [255. 255. 255.]
  [255. 255. 255.]]

 [[255. 255. 255.]
  [255. 255. 255.]
  [255. 255. 255.]
  [255. 255. 255.]]]
[[[  0.   0.   0.]
  [  0.   0.   0.]
  [  0.   0.   0.]
  [  0.   0.   0.]]

 [[255. 255. 255.]
  [255. 255. 255.]
  [255. 255. 255.]
  [255. 255. 255.]]

 [[255. 255. 255.]
  [255. 255. 255.]
  [255. 255. 255.]
  [255. 255. 255.]]

 [[  0.   0.   0.]
  [  0.   0.   0.]
  [  0.   0.   0.]
  [  0.   0.   0.]]]
我的计划是通过以下步骤使用numpy.concatenate

#1使用此维度(1,4,3)创建0的数组

#2将原始数组连接到步骤1中的数组。这将创建一个像这样的新数组

[[[  0.   0.   0.]
  [  0.   0.   0.]
  [  0.   0.   0.]
  [  0.   0.   0.]]

 [[255. 255. 255.]
  [255. 255. 255.]
  [255. 255. 255.]
  [255. 255. 255.]]

 [[255. 255. 255.]
  [255. 255. 255.]
  [255. 255. 255.]
  [255. 255. 255.]]]
#3使用步骤1中的数组并将其附加到第2部分中创建的数组中,这将最终得到我想要的结果


但是,我还想知道是否有一种方法可以使用numpy.insert并在数组的开头和结尾插入(1,4,3),而不会使连接复杂化。如果您对此有任何意见,我将不胜感激。

使用
numpy.concatenate
,您可以创建一个零数组来连接任意一侧

zs = np.zeros((1,) + arr.shape[1:])
np.concatenate((zs, arr, zs))
另一个选项-创建新大小的零阵列,并将内部设置为原始阵列

padded_arr = np.zeros((arr.shape[0]+2,) + arr.shape[1:])
padded_arr[1:-1, ...] = arr
最后,可以通过为每个轴指定焊盘宽度来实现这一点

np.pad(arr, ((1,), (0,), (0,)), 'constant')

您可以同时连接零(z)255数组(mid)和第二个零。。。。np.连接((z,mid,z))。。。。其中z.shape,mid.shape,z.shape。。。((1,5,5),(2,5,5),(1,5,5))这工作做得很好。我肯定会得到更多关于numpy数组访问符号的信息,以便我完全理解第二个示例中的情况。