diff --git a/src/NumSharp/Extensions/NdArray.Convolve.cs b/src/NumSharp/Extensions/NdArray.Convolve.cs
new file mode 100644
index 000000000..211c56a57
--- /dev/null
+++ b/src/NumSharp/Extensions/NdArray.Convolve.cs
@@ -0,0 +1,53 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using NumSharp;
+
+namespace NumSharp.Extensions
+{
+ public static partial class NDArrayExtension
+ {
+ ///
+ /// Convolution of 2 series
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static NDArray Convolve(this NDArray numSharpArray1, NDArray numSharpArray2, string mode = "full")
+ {
+ int nf = numSharpArray1.Length;
+ int ng = numSharpArray2.Length;
+
+ var numSharpReturn = new NDArray();
+
+ if (mode.Equals("full"))
+ {
+ int n = nf + ng - 1;
+
+ var out_ = new double[n];
+
+ for (int idx = 0; idx < n; ++idx)
+ {
+ int jmn = (idx >= ng - 1) ? (idx - (ng - 1)) : 0;
+ int jmx = (idx < nf - 1) ? idx : nf - 1;
+
+ for (int jdx = jmn; jdx <= jmx; ++jdx )
+ {
+ out_[idx] += ( numSharpArray1[jdx] * numSharpArray2[idx - jdx] );
+ }
+ }
+
+ numSharpReturn.Data = out_;
+ }
+ else
+ {
+
+ }
+
+ return numSharpReturn;
+ }
+ }
+ }
\ No newline at end of file
diff --git a/test/NumSharp.UnitTest/Extensions/NdArray.Convolve.Test.cs b/test/NumSharp.UnitTest/Extensions/NdArray.Convolve.Test.cs
new file mode 100644
index 000000000..c8e1fae46
--- /dev/null
+++ b/test/NumSharp.UnitTest/Extensions/NdArray.Convolve.Test.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using NumSharp.Extensions;
+using System.Linq;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+
+namespace NumSharp.UnitTest.Extensions
+{
+ ///
+ /// Test concolve with standard example from
+ /// https://www.numpy.org/devdocs/reference/generated/numpy.convolve.html
+ ///
+ [TestClass]
+ public class NdArrayConvolveTest
+ {
+ [TestMethod]
+ public void ConvoleFull()
+ {
+ var series1 = new NDArray();
+ series1.Data = new double[]{1, 2, 3};
+
+ var series2 = new NDArray();
+ series2.Data = new double[]{0, 1, 0.5};
+
+ var series3 = series1.Convolve(series2);
+
+ double[] expectedResult = new double[]{0, 1, 2.5, 4, 1.5};
+
+ Assert.IsTrue(Enumerable.SequenceEqual(series3.Data.ToArray(), expectedResult));
+ }
+ [TestMethod]
+ public void ConvoleValid()
+ {
+ // To be done
+ }
+ [TestMethod]
+ public void ConvoleSame()
+ {
+ // To be done
+ }
+
+ }
+}
\ No newline at end of file