Python Can';我不理解uniform_filter1d()函数(从scipy.ndimage.filters导入)的工作原理

Python Can';我不理解uniform_filter1d()函数(从scipy.ndimage.filters导入)的工作原理,python,scipy,Python,Scipy,我在这里阅读了函数的scipy文档:。然而,当我试着使用它时,我无法用它来控制我的头。我阅读了文档,在pythonshell中运行了示例,使用了我自己的示例,但仍然没有任何进展。 例如: 当我看到第二个数组的输出时,感觉函数保留了数组的大部分元素。然而,在第二个示例中,它感觉像是禁用了4&1,输出数组中的所有其他元素都是全新的 因此,我希望您能帮助我了解此函数的工作原理和使用方法。此过滤器根据大小,将每个像素与其相邻像素进行算术平均。Size是要计算算术平均值的子数组的大小。没有足够邻域的像素的

我在这里阅读了函数的scipy文档:。然而,当我试着使用它时,我无法用它来控制我的头。我阅读了文档,在pythonshell中运行了示例,使用了我自己的示例,但仍然没有任何进展。 例如:

当我看到第二个数组的输出时,感觉函数保留了数组的大部分元素。然而,在第二个示例中,它感觉像是禁用了4&1,输出数组中的所有其他元素都是全新的


因此,我希望您能帮助我了解此函数的工作原理和使用方法。

此过滤器根据大小,将每个像素与其相邻像素进行算术平均。Size是要计算算术平均值的子数组的大小。没有足够邻域的像素的标准是反射。让我们开始它的过程:

uniform_filter1d([1,2,3,4,5,6], size=3)

[1,2,3,4,5,6] # index 0, Reflect 1 : [1,1,2] -> average: 4/3 = 1
[1,2,3,4,5,6] # index 1, [1,2,3] -> average: 6/3 = 2
[1,2,3,4,5,6] # index 2, [2,3,4] -> average: 9/3 = 3
[1,2,3,4,5,6] # index 3, [3,4,5] -> average: 12/3 = 4
[1,2,3,4,5,6] # index 4, [4,5,6] -> average: 15/3 = 5
[1,2,3,4,5,6] # index 5, Reflect 6 : [5,6,6] -> average: 17/3 = 5

Result: [1,2,3,4,5,5]

非常好的解释。此函数的文档确实不充分,没有帮助。你的解释帮了我的忙。仅供参考,通过将输入数据乘以大小n,你可以将这段代码转换成一个超快速运行的和(又名加窗和,又名与大小为n和大小为1的矩形的卷积)!真的很有用。@TrevorBoydSmith谢谢你提供的信息。但无法使窗口总和正常工作。也许我做错了什么。因此,例如,如果我想将
1,2,3,4,5,6
相加,那么我应该运行
uniform\u filter1d([3,6,9,12,15,18],size=3)
?@OzgurBagci uniform\u filter1d()的运行意味着你必须调整缩放比例。它也有非直观的参数,例如do(1.)
uniform_filter1d(data*size,size=size,mode='constant',cval=0.0,origin=-(size//2)
(2.)你可以测试
np.convolve(data,np.one(size),mode='valid')
这是一个重要的工具,因为它比
np.convolve()快20-30倍
uniform_filter1d([1,2,3,4,5,6], size=3)

[1,2,3,4,5,6] # index 0, Reflect 1 : [1,1,2] -> average: 4/3 = 1
[1,2,3,4,5,6] # index 1, [1,2,3] -> average: 6/3 = 2
[1,2,3,4,5,6] # index 2, [2,3,4] -> average: 9/3 = 3
[1,2,3,4,5,6] # index 3, [3,4,5] -> average: 12/3 = 4
[1,2,3,4,5,6] # index 4, [4,5,6] -> average: 15/3 = 5
[1,2,3,4,5,6] # index 5, Reflect 6 : [5,6,6] -> average: 17/3 = 5

Result: [1,2,3,4,5,5]