【问题标题】:numpy array - use np.concatenate or np.insert to prepend and append rows of zeros to ndarraynumpy 数组 - 使用 np.concatenate 或 np.insert 将零行添加到 ndarray
【发布时间】:2018-06-03 00:58:46
【问题描述】:

我对 numpy 还很陌生,我很可能会问一个愚蠢的问题,所以如果这不是一个好问题或者问题需要更多澄清,我提前道歉。

任务

例如,我有一个表示为大小为 (10,20,3) 的 ndarray 的图像,我试图通过在开头和处插入 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.]]]

我的计划是按照以下步骤使用 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) 插入到数组的开头和结尾,而不会使连接复杂化。对此我将不胜感激。

【问题讨论】:

  • 您可以一次连接零 (z) 255 个数组 (mid) 和第二个零 .... np.concatenate((z, mid, z)) .... 其中 z。 shape, mid.shape, z.shape ... ((1, 5, 5), (2, 5, 5), (1, 5, 5))

标签: python arrays numpy insert concatenation


【解决方案1】:

使用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

最后,您可以使用numpy.pad 实现此目的,为每个轴指定一个焊盘宽度。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    • 2019-08-17
    相关资源
    最近更新 更多