There was an error while loading. Please reload this page.
1 parent ba3d67c commit 77fde8dCopy full SHA for 77fde8d
1 file changed
Doc/library/itertools.rst
@@ -786,6 +786,18 @@ which incur interpreter overhead.
786
def dotproduct(vec1, vec2):
787
return sum(map(operator.mul, vec1, vec2))
788
789
+ def convolve(signal, kernel):
790
+ # See: https://betterexplained.com/articles/intuitive-convolution/
791
+ # convolve(data, [0.25, 0.25, 0.25, 0.25]) --> Moving average (blur)
792
+ # convolve(data, [1, -1]) --> 1st finite difference (1st derivative)
793
+ # convolve(data, [1, -2, 1]) --> 2nd finite difference (2nd derivative)
794
+ kernel = list(reversed(kernel))
795
+ n = len(kernel)
796
+ window = collections.deque([0] * n, maxlen=n)
797
+ for x in chain(signal, repeat(0, n-1)):
798
+ window.append(x)
799
+ yield sum(map(operator.mul, kernel, window))
800
+
801
def flatten(list_of_lists):
802
"Flatten one level of nesting"
803
return chain.from_iterable(list_of_lists)
0 commit comments