我不明白反射模式是如何处理我的数组的。我有一个非常简单的数组:
import numpy as np
from scipy.ndimage.filters import uniform_filter
from scipy.ndimage.filters import median_filter
vector = np.array([[1.0,1.0,1.0,1.0,1.0],[2.0,2.0,2.0,2.0,2.0],[4.0,4.0,4.0,4.0,4.0],[5.0,5.0,5.0,5.0,5.0]])
print(vector)
[[1。一。一。一。1.] 〔2〕。2。2。2。2.] 〔4〕。四。四。四。4.] 〔5〕。5个。5个。5个。5.]]
应用窗口大小为3的均匀(平均)滤波器,得到以下结果:
filtered = uniform_filter(vector, 3, mode='reflect')
print(filtered)
[1.33333333 1.33333333 1.33333333 1.33333333 1.33333333 1.33333333] [2.33333333 2.33333333 2.33333333 2.33333333 2.33333333 2.33333333] [3.66666667 3.666667 3.66666667 3.66666667 3.66666667 3.66666 7] [4.66666667 4.666667 4.666667 4.66666667 4.66666667 4.66666 7]]
如果我试着用手重复这个练习,我就能得到这个结果。原始矩阵为绿色,窗口为橙色,结果为黄色。白色是“反射”观察。
结果是:
但当我尝试4或5的窗口大小时,我无法复制结果。
filtered = uniform_filter(vector, 4, mode='reflect')
print(filtered)
[1.5 1.5 1.5 1.5 1.5 1.5] 〔2〕。2。2。2。2。] 〔3〕。三。三。三。三。] 〔4〕。四。四。四。四。]]
手工操作:
我得到:
如果窗户大小均匀,怎么处理?但无论如何,如果我试图复制一个大小为5的窗口和模式反射的结果,我也不能。即使我认为这种行为类似于3号。
假设一个轴中的数据是
1 2 3 4 5 6 7 8
。下表显示了如何为每个模式扩展数据(假设cval=0
):对于均匀大小的窗口
n
,请考虑大小为n+1
的窗口,然后不要包括下边缘和右边缘。(可以使用origin
参数更改窗口的位置。)相关问题 更多 >
编程相关推荐