我想用如下所示的常量值填充数组(实际上是一个 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/