Python 如何在不填充角的情况下填充numpy阵列?
我想用一个常量值填充一个数组,如下所示(实际上是一个3D数组,但为了简洁起见,我在这里展示了一个2D示例): 应该成为Python 如何在不填充角的情况下填充numpy阵列?,python,arrays,numpy,Python,Arrays,Numpy,我想用一个常量值填充一个数组,如下所示(实际上是一个3D数组,但为了简洁起见,我在这里展示了一个2D示例): 应该成为 [[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]] [[[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]]] 现在,numpy.pad将填
[[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]]
[[[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]]]
现在,numpy.pad
将填充角落(以及3D中的边缘),这不是我想要的。我可以“手动”将它们设置为零,但这会变得单调乏味,尤其是在3D中
有没有简便快捷的方法
编辑
为了使3D案例更加清晰,以下是一个示例:
[[[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]]
[[[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函数文档,函数的一个可能参数可以是模式:str或function 下列字符串值之一或用户提供的函数 (来源:) 这意味着您需要做的就是传递一个函数,该函数检查这是否是角点,如果是,则将值设置为0,否则设置为1。这诅咒可以做一点修改为您的3D案件
希望有助于填补什么?你的数组是否总是包含所有的?使用一个常量值,我编辑了这个问题。你确定3D案例的第二个2D切片吗?它看起来与第一个片段相同。在3d示例中,人们应该如何快速遵循填充模式?你在数组中填充的大多是带零的零,并且你希望在角点中填充零……非常令人困惑。在我看来,给定的示例并不那么令人困惑。给定的值只是在所有空间方向上用
c
填充。想象一下一个2D或3D图表,其中填充的形状与坐标十字对应。