首页 > 解决方案 > 反射/镜像填充如何工作?在numpy还是一般?

问题描述

我正在对一个向量说 [1,2,3] 运行以下命令。其中前两个我可以解释。每个额外的填充坐标都围绕最后一个元素 (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.])

标签: numpypadding

解决方案


想象一下,穿过​​原始数组,每次遇到边界时,您都会转向另一个方向。

当您向右前进并到达终点时,您会反思并开始迭代回到起点。当您向左前进并回到起点时,您会反思并开始迭代回到终点。

以这种方式将序列可视化为一系列反射可能会有所帮助:

[1, 2, 3]

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

推荐阅读