python - 如何填充 numpy 数组而不填充角落?

标签 python arrays numpy

我想用如下所示的常量值填充数组(实际上是一个 3D 数组,但为了简洁起见,我在此处显示了一个 2D 示例):

[[1,1,1],
 [1,1,1],
 [1,1,1]]

应该变成

[[0,1,1,1,0],
 [1,1,1,1,1],
 [1,1,1,1,1],
 [1,1,1,1,1],
 [0,1,1,1,0]]

现在 numpy.pad 将填充角落(在 3D 中也填充边缘),这不是我想要的。我可以“手动”将它们设置为零,但这会变得乏味,尤其是在例如3D

有没有一种简短而方便的方法来做到这一点?

编辑 为了让3D案例更加清晰,下面是一个例子:

[[[1]]]

应该变成

[[[0,0,0],
  [0,c,0],
  [0,0,0]],

 [[0,c,0],
  [c,1,c],
  [0,c,0]],

 [[0,0,0],
  [0,c,0],
  [0,0,0]]]

对于填充厚度为 2 的示例将显示为:

[[[0,0,0,0,0],
  [0,0,0,0,0],
  [0,0,c,0,0],
  [0,0,0,0,0],
  [0,0,0,0,0]],

 [[0,0,0,0,0],
  [0,0,0,0,0],
  [0,0,c,0,0],
  [0,0,0,0,0],
  [0,0,0,0,0]],

 [[0,0,c,0,0],
  [0,0,c,0,0],
  [c,c,1,c,c],
  [0,0,c,0,0],
  [0,0,c,0,0]],

 [[0,0,0,0,0],
  [0,0,0,0,0],
  [0,0,c,0,0],
  [0,0,0,0,0],
  [0,0,0,0,0]],

 [[0,0,0,0,0],
  [0,0,0,0,0],
  [0,0,c,0,0],
  [0,0,0,0,0],
  [0,0,0,0,0]]]

最佳答案

我认为这个问题实际上可以通过 numpy.pad 函数很容易地解决。

根据 numpy.pad 函数文档,函数的可能参数之一可以是 mode :str 或 function 以下字符串值之一或用户提供的函数 (来源:https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.pad.html)。

这意味着您需要做的就是传递一个函数来检查这是否是一个角,如果是,则将值设置为 0,否则设置为 1。可以通过对您的 3D 情况进行一些修改来完成curse的操作.

希望有帮助

关于python - 如何填充 numpy 数组而不填充角落?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46040277/

相关文章:

python - 相同的 Keras 脚本可以在 WSL (Ubuntu) 中运行,但不能在 Conda 中运行?

python - 如何删除同义词?

Python:包含元组的排序列表

c - 将更大的字符串存储到 arr[num]

c# - 创建巨大的字典

python - 系列的长度与 np.where 不匹配

python - 根据用户 ID PySpark 在训练测试中分割行

c++ - 打印多维数组中的元素 - C++

python - 如何对所有网格进行矢量化计算而不是 'for' 循环?

python - 在 Python 中从 .csv 文件排序