我需要使用第一行和最后一行/列作为填充数据,有效地在所有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]])