【问题标题】:add a border (filled with 0's) around an existing array在现有数组周围添加边框(用 0 填充)
【发布时间】:2022-01-17 03:21:46
【问题描述】:

我正在尝试在现有数组周围添加一个边框(用 0 填充)。 我的代码:

a = np.random.random((4, 5))
m, n = a.shape
b = np.zeros((m+1, n+1))
b[1:-1,1:-1] = a
a,b

但我得到了一个错误: ValueError: could not broadcast input array from shape (4,5) into shape (3,4)

为什么我不能直接为 2D numpy 数组的某些部分赋值?问题出在哪里?

【问题讨论】:

  • 您希望每边都有一个边框,所以新形状必须是(m+2, n+2)
  • 如果尺寸合适,您可以赋值。
  • 太棒了!非常感谢!!

标签: python numpy broadcast


【解决方案1】:

您可以使用 np.pad 功能完成您的任务:

b = np.pad(a, 1)

比你的代码更短。

阅读此函数的文档以了解任何详细信息。

【讨论】:

  • 太棒了!非常感谢!
  • 所以现在你可以接受我的回答了。
猜你喜欢
  • 1970-01-01
  • 2022-01-23
  • 2018-05-28
  • 2014-09-12
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
  • 2018-06-25
  • 2017-04-16
相关资源
最近更新 更多