如何使用第一行/最后一行/列作为填充来制作填充的numpy数组



我需要使用第一行和最后一行/列作为填充数据,有效地在所有4侧填充numpy数组。例如,给定以下内容:

A=np.array([[1    2   3   4],
            [5    6   7   8],
            [9   10  11  12]])

我正试图以结束

B=np.array([[1    1    2    3    4    4],
            [1    1    2    3    4    4],
            [5    5    6    7    8    8],
            [9    9   10   11   12   12],
            [9    9   10   11   12   12]])

请注意,原始数组A位于:B[1:-1,1:-1]。我假设我可以先向一个方向(水平或垂直)填充,然后再向另一个方向填充,以获得重复的角值。然而,我的矢量化/numpification让我失望了。

使用np.pad,可以指定要应用于数组的填充宽度和填充模式。对于您的示例数组,edge填充模式会给出所需的结果:

>>> np.pad(A, 1, 'edge')
array([[ 1,  1,  2,  3,  4,  4],
       [ 1,  1,  2,  3,  4,  4],
       [ 5,  5,  6,  7,  8,  8],
       [ 9,  9, 10, 11, 12, 12],
       [ 9,  9, 10, 11, 12, 12]])

最新更新