【发布时间】:2017-01-11 19:11:31
【问题描述】:
在 SO 上找到 Python 中的 N 维数组卷积之后
我现在面临一个我无法解决的问题。
scipy.ndimage 提供的卷积不允许像 Matlab 的 convn 那样选择卷积的“有效”部分,因此我们需要切出有效部分。
"valid = [slice(kernel.shape[0]//2, -kernel.shape[0]//2), slice(kernel.shape[1]//2, -kernel.shape[1]//2)]"
对于 [2x2] 的内核大小,我不确定为什么我没有为图像 [24x24] 与内核的卷积获得有效切片。
z = convolve(image,kernel)[valid]
作为回报,我得到了一张 [22x22] 的图像,而我期待的是一张 [23x23] 的图像。 因此,我检查了切片的值,似乎 -1 在这里不起作用。
手动切片
convolve(image,kernel)[1:-1,1:-1] ---> Gives 22x22
convolve(image,kernel)[1:,1:] ---> Gives 23x23
所以问题是......为什么 -1 给出了一个简单数组的最后一项,但在我切片的情况下它忽略了它?
a= np.array([100,101,102])
a[-1]
102
【问题讨论】: