Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在不填充角的情况下填充numpy阵列?_Python_Arrays_Numpy - Fatal编程技术网

Python 如何在不填充角的情况下填充numpy阵列?

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将填

我想用一个常量值填充一个数组,如下所示(实际上是一个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
将填充角落(以及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图表,其中填充的形状与坐标十字对应。