反射/镜像填充如何工作?用numpy还是一般来说?

时间:2018-08-10 05:11:50

标签: numpy padding

我针对向量[1,2,3]运行以下命令。我可以解释其中的前2个。每个附加的填充坐标都围绕最后一个元素(3)进行镜像。但是在那之后我不能。

这里肯定有4个周期,这意味着mod of 2*(len(a) -1)

如果有人将其分解,我将不胜感激。此示例用于末端反射。如果开始反射有什么不同,我也想听听:

>>> a
array([1., 2., 3.])
>>> np.pad(a, ((0,1)), 'reflect')
array([1., 2., 3., 2.])
>>> np.pad(a, ((0,2)), 'reflect')
array([1., 2., 3., 2., 1.])
>>> np.pad(a, ((0,3)), 'reflect')
array([1., 2., 3., 2., 1., 2.])
>>> np.pad(a, ((0,4)), 'reflect')
array([1., 2., 3., 2., 1., 2., 3.])
>>> np.pad(a, ((0,5)), 'reflect')
array([1., 2., 3., 2., 1., 2., 3., 2.])
>>> np.pad(a, ((0,6)), 'reflect')
array([1., 2., 3., 2., 1., 2., 3., 2., 1.])
>>> np.pad(a, ((0,7)), 'reflect')
array([1., 2., 3., 2., 1., 2., 3., 2., 1., 2.])
>>> np.pad(a, ((0,8)), 'reflect')
array([1., 2., 3., 2., 1., 2., 3., 2., 1., 2., 3.])
>>> np.pad(a, ((0,9)), 'reflect')
array([1., 2., 3., 2., 1., 2., 3., 2., 1., 2., 3., 2.])

1 个答案:

答案 0 :(得分:1)

想象一下逐步遍历原始数组,每当您到达边界时,您都会向另一个方向移动。

当您向右前进并到达末尾时,您将进行反思并开始从头开始迭代。当您向左移动并到达起点时,您将进行反思并开始迭代回到终点。

以这种方式将序列可视化可能会有所帮助:

[1, 2, 3]

 1
    2
       3
    2
 1
    2
       3
    2
 1
    2
       3
    2
 1