Example #1
0
        public void absolute()
        {
            var np = new NumPyGeneric <double>();

            //2D
            var n  = np.arange(-2, 2).reshape(2, 2);
            var n1 = np.absolute(n);

            Assert.IsTrue(n1[0, 0] == 2);
            Assert.IsTrue(n1[0, 1] == 1);
            Assert.IsTrue(n1[1, 0] == 0);
            Assert.IsTrue(n1[1, 1] == 1);

            //3D
            n  = np.arange(-4, 4).reshape(2, 2, 2);
            n1 = np.absolute(n);
            Assert.IsTrue(n1[0, 0, 0] == 4);
            Assert.IsTrue(n1[0, 0, 1] == 3);
            Assert.IsTrue(n1[1, 0, 0] == 0);
            Assert.IsTrue(n1[1, 1, 1] == 3);

            //4D
            n  = np.arange(-12, 12).reshape(2, 3, 2, 2);
            n1 = np.absolute(n);
            Assert.IsTrue(n1[0, 0, 0, 0] == 12);
            Assert.IsTrue(n1[0, 1, 0, 0] == 8);
            Assert.IsTrue(n1[1, 2, 1, 1] == 11);
            Assert.IsTrue(n1[1, 2, 0, 1] == 9);
        }
        public void Zeros2Dim()
        {
            var np = new NumPyGeneric <int>();
            var n  = np.zeros(3, 2);

            Assert.IsTrue(Enumerable.SequenceEqual(n.Data, new int[] { 0, 0, 0, 0, 0, 0 }));
        }
Example #3
0
        public void ReShape()
        {
            var np = new NumPyGeneric <int>();
            var n  = np.reshape(np.arange(6), 3, 2);

            Assert.IsTrue(n[0, 0] == 0);
            Assert.IsTrue(n[1, 1] == 3);
            Assert.IsTrue(n[2, 1] == 5);
            // Assert.IsTrue(np2.ToString().Equals("array([[0, 1], [2, 3], [4, 5]])"));

            n = np.reshape(np.arange(6), 2, 3, 1);
            Assert.IsTrue(n[1, 1, 0] == 4);
            Assert.IsTrue(n[1, 2, 0] == 5);

            n = np.reshape(np.arange(12), 2, 3, 2);
            Assert.IsTrue(n[0, 0, 1] == 1);
            Assert.IsTrue(n[1, 0, 1] == 7);
            Assert.IsTrue(n[1, 1, 0] == 8);

            n = np.reshape(np.arange(12), 3, 4);
            Assert.IsTrue(n[1, 1] == 5);
            Assert.IsTrue(n[2, 0] == 8);

            n = np.reshape(n, 2, 6);
            Assert.IsTrue(n[1, 0] == 6);
        }
Example #4
0
        public void Enumerate()
        {
            var np = new NumPyGeneric <int>().arange(12).reshape(2, 3, 2);

            int i = 0;

            foreach (var nd1 in np)
            {
                Assert.IsTrue(Enumerable.SequenceEqual(np[new Shape(i)].Data, ((NDArrayGeneric <int>)nd1).Data));
                Console.WriteLine(nd1.ToString());

                int j = 0;
                foreach (var nd2 in (NDArrayGeneric <int>)nd1)
                {
                    Assert.IsTrue(Enumerable.SequenceEqual(np[new Shape(i, j)].Data, ((NDArrayGeneric <int>)nd2).Data));
                    Console.WriteLine(nd2.ToString());

                    int k = 0;
                    foreach (var nd3 in (NDArrayGeneric <int>)nd2)
                    {
                        Assert.IsTrue(np[i, j, k] == (int)nd3);
                        Console.WriteLine(nd3.ToString());
                        k++;
                    }

                    j++;
                }

                i++;
            }
        }
Example #5
0
        public void randint()
        {
            var np = new NumPyGeneric <int>();
            var a  = np.random.randint(low: 0, high: 10, size: new Shape(5, 5));

            Assert.IsTrue(a.Data.Count(x => x < 10) == 25);
        }
Example #6
0
        public void VStackNDArrays()
        {
            //1D
            var np = new NumPyGeneric <double>();
            var n1 = np.array(new double[] { 1, 2, 3 });
            var n2 = np.array(new double[] { 2, 3, 4 });

            var n = np.vstack(n1, n2);

            Assert.IsTrue(n.Size == (n1.Size + n2.Size));
            Assert.IsTrue(n[0, 0] == 1);
            Assert.IsTrue(n[1, 0] == 2);
            Assert.IsTrue(n[1, 2] == 4);

            //2D
            n1 = np.array(new double[][] { new double[] { 1 }, new double[] { 2 }, new double[] { 3 } });
            n2 = np.array(new double[][] { new double[] { 4 }, new double[] { 5 }, new double[] { 6 } });

            n = np.vstack(n1, n2);

            Assert.IsTrue(n.Size == (n1.Size + n2.Size));
            Assert.IsTrue(n[0, 0] == 1);
            Assert.IsTrue(n[1, 0] == 2);
            Assert.IsTrue(n[2, 0] == 3);
            Assert.IsTrue(n[3, 0] == 4);
            Assert.IsTrue(n[4, 0] == 5);
            Assert.IsTrue(n[5, 0] == 6);
        }
Example #7
0
        public static NDArrayGeneric <T> delete <T>(this NumPyGeneric <T> np, NDArrayGeneric <T> nd, IEnumerable <T> delete)
        {
            var nd1 = np.array(nd.Data.Where(x => !delete.Contains(x)));

            nd1.Shape = new Shape(nd1.Data.Length);

            return(nd1);
        }
Example #8
0
        public void Double1DPlusOffset_NDArraySubtraction()
        {
            var np1 = new NumPyGeneric <double>().array(new double[] { 3, 5, 7 });

            // var np2 = np1 - 3;

            // Assert.IsTrue(Enumerable.SequenceEqual(new double[]{0,2,4},np2.Data));
        }
Example #9
0
        public void Complex1DPlusOffset_NDArraySubtraction()
        {
            var np1 = new NumPyGeneric <Complex>().array(new Complex[] { new Complex(6, 8), new Complex(10, 12) });

            // var np2 = np1 - new Complex(2,1);

            // Assert.IsTrue(Enumerable.SequenceEqual(new Complex[]{new Complex(4,7),new Complex(8,11)},np2.Data));
        }
Example #10
0
        public void ComplexTwo1D_NDArraySubtraction()
        {
            var np1 = new NumPyGeneric <Complex>().array(new Complex[] { new Complex(6, 8), new Complex(10, 12) });
            var np2 = new NumPyGeneric <Complex>().array(new Complex[] { new Complex(5, 6), new Complex(7, 8) });

            // var np3 = np1 - np2;

            // Assert.IsTrue(Enumerable.SequenceEqual(new Complex[]{new Complex(1,2),new Complex(3,4)},np3.Data));
        }
Example #11
0
        public void ComplexTwo2D_MatrixAddition()
        {
            var np1 = new NumPyGeneric <Complex>().array(new Complex[] { new Complex(1, 2), new Complex(3, 4) });
            var np2 = new NumPyGeneric <Complex>().array(new Complex[] { new Complex(5, 6), new Complex(7, 8) });

            var np3 = np1 + np2;

            Assert.IsTrue(Enumerable.SequenceEqual(new Complex[] { new Complex(6, 8), new Complex(10, 12) }, np3.Data));
        }
Example #12
0
        public void DoubleTwo1D_NDArraySubtraction()
        {
            var np1 = new NumPyGeneric <double>().array(new double[] { 3, 5, 7 });
            var np2 = new NumPyGeneric <double>().array(new double[] { 1, 3, 4 });

            // var np3 = np1 - np2;

            // Assert.IsTrue(Enumerable.SequenceEqual(new double[]{2,2,3},np3.Data));
        }
Example #13
0
        public void Setup()
        {
            np     = new NumPyGeneric <int>();
            nd     = new NDArrayGeneric <int>();
            start  = 0;
            step   = 1;
            length = 100 * 100;

            np2 = new NumPy();
        }
Example #14
0
        public void PowerWithSingleValue()
        {
            var np = new NumPyGeneric <double>().arange(3);

            np = np.power(2);

            Assert.IsTrue(np[0] == 0);
            Assert.IsTrue(np[1] == 1);
            Assert.IsTrue(np[2] == 4);
        }
Example #15
0
        public void Simple1DArray()
        {
            var np1 = new NumPyGeneric <double>().array(new double[] { 1, Math.E, Math.E * Math.E, 0 });

            var np2 = np1.log();

            Assert.IsTrue(np2[0] == 0);
            Assert.IsTrue(np2[1] == 1);
            Assert.IsTrue(np2[2] == 2);
            Assert.IsTrue(np2[3] == double.NegativeInfinity);
        }
Example #16
0
        public void DotTwo1DComplex()
        {
            var series1 = new NumPyGeneric <Complex>().array(new Complex[] { new Complex(0, 2), new Complex(0, 3) });

            var series2 = new NumPyGeneric <Complex>().array(new Complex[] { new Complex(0, 2), new Complex(0, 3) });

            //var series3 = series1.Dot(series2);

            //Complex[] expectedResult = new Complex[]{new Complex(-13,0)};

            //Assert.IsTrue(Enumerable.SequenceEqual(series3.Data.ToArray(),expectedResult));
        }
Example #17
0
    public static dynamic array(IList <object> list, string dataType)
    {
        Console.WriteLine(list);
        Console.WriteLine(dataType);

        dynamic returnArray = null;

        switch (dataType)
        {
        case "Double":
        {
            double[] array = list.Select(x => (double)x).ToArray();
            returnArray = new NumPyGeneric <double>().array(array);
            break;
        }

        case "Float":
        {
            float[] array = list.Select(x => (float)x).ToArray();
            returnArray = new NumPyGeneric <float>().array(array);
            break;
        }

        case "Int32":
        {
            System.Int32[] array = list.Select(x => (System.Int32)x).ToArray();
            returnArray = new NumPyGeneric <int>().array(array);
            break;
        }

        case "Int64":
        {
            System.Int64[] array = list.Select(x => (System.Int64)x).ToArray();
            returnArray = new NumPyGeneric <System.Int64>().array(array);
            break;
        }

        case "Complex":
        {
            System.Numerics.Complex[] array = list.Select(x => (System.Numerics.Complex)x).ToArray();
            returnArray = new NumPyGeneric <System.Numerics.Complex>().array(array);
            break;
        }

        default:
        {
            break;
        }
        }

        return(returnArray);
    }
Example #18
0
        public void TwoxThree()
        {
            NDArrayGeneric <double> np1 = new NumPyGeneric <double>().arange(6).reshape(3, 2);

            var np1Transposed = np1.transpose();

            Assert.IsTrue(np1Transposed[0, 0] == 0);
            Assert.IsTrue(np1Transposed[0, 1] == 2);
            Assert.IsTrue(np1Transposed[0, 2] == 4);
            Assert.IsTrue(np1Transposed[1, 0] == 1);
            Assert.IsTrue(np1Transposed[1, 1] == 3);
            Assert.IsTrue(np1Transposed[1, 2] == 5);
        }
        public void ThreeMultiplication()
        {
            NDArrayGeneric <double> np1 = new NumPyGeneric <double>().arange(4).reshape(2, 2);
            NDArrayGeneric <double> np2 = np1.inv();
            NDArrayGeneric <double> np3 = new NumPyGeneric <double>().ones(new Shape(2, 2));

            var OncesMatrix = np1.multi_dot(np2, np3);

            Assert.IsTrue(OncesMatrix[0, 0] == 1);
            Assert.IsTrue(OncesMatrix[1, 0] == 1);
            Assert.IsTrue(OncesMatrix[0, 1] == 1);
            Assert.IsTrue(OncesMatrix[1, 1] == 1);
        }
Example #20
0
        public void Simple1DArray()
        {
            var np = new NumPyGeneric <double>();
            var nd = np.array(new double[] { 0, 30, 45, 60, 90 }) * (Math.PI / 180);

            var nd2 = np.sin(nd);

            Assert.IsTrue(nd2[0] == 0);
            Assert.IsTrue(nd2[1] < 0.501);
            Assert.IsTrue(nd2[1] > 0.498);
            Assert.IsTrue(nd2[2] < 0.708);
            Assert.IsTrue(nd2[2] > 0.7069);
            Assert.IsTrue(nd2[3] < 0.867);
            Assert.IsTrue(nd2[3] > 0.8659);
            Assert.IsTrue(nd2[4] == 1);
        }
Example #21
0
        public void HStackNDArrays()
        {
            //1D
            var np = new NumPyGeneric <double>();
            var n1 = np.array(new double[] { 1, 2, 3 });
            var n2 = np.array(new double[] { 2, 3, 4 });

            var n = np.hstack(n1, n2);

            Assert.IsTrue(n.Size == (n1.Size + n2.Size));
            Assert.IsTrue(n[0] == 1);
            Assert.IsTrue(n[1] == 2);
            Assert.IsTrue(n[3] == 2);
            Assert.IsTrue(n[5] == 4);

            //2D
            n1 = np.array(new double[][] { new double[] { 1 }, new double[] { 2 }, new double[] { 3 } });
            n2 = np.array(new double[][] { new double[] { 4 }, new double[] { 5 }, new double[] { 6 } });

            n = np.hstack(n1, n2);

            Assert.IsTrue(n.Size == (n1.Size + n2.Size));
            Assert.IsTrue(n[0, 0] == 1);
            Assert.IsTrue(n[1, 0] == 2);
            Assert.IsTrue(n[2, 0] == 3);
            Assert.IsTrue(n[0, 1] == 4);
            Assert.IsTrue(n[1, 1] == 5);
            Assert.IsTrue(n[2, 1] == 6);

            //3D
            n1 = np.array(new double[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }).reshape(2, 3, 2);
            n2 = np.array(new double[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }).reshape(2, 3, 2);
            n  = np.hstack(n1, n2);

            Assert.IsTrue(n.Size == (n1.Size + n2.Size));
            Assert.IsTrue(n[0, 0, 0] == 0);
            Assert.IsTrue(n[0, 1, 0] == 2);
            Assert.IsTrue(n[0, 2, 1] == 5);

            //4D
            //n1 = np.arange(24 * 10000000).ReShape(20000, 30, 20, 2);
            //n2 = np.arange(24 * 10000000).ReShape(20000, 30, 20, 2);
            //n = np.hstack(n1, n2);

            //Assert.IsTrue(n.Size == (n1.Size + n2.Size));
        }
Example #22
0
        /// <summary>
        /// Return a new array of given shape and type, filled with ones.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="np"></param>
        /// <param name="shape"></param>
        /// <returns></returns>
        public static NDArrayGeneric <T> ones <T>(this NumPyGeneric <T> np, Shape shape)
        {
            var nd = new NDArrayGeneric <T>();

            nd.Shape = shape;

            switch (default(T))
            {
            case int data:
                nd.Data = Enumerable.Range(0, nd.Size).Select(x => (T)(object)1).ToArray();
                break;

            case double data:
                nd.Data = Enumerable.Range(0, nd.Size).Select(x => (T)(object)1.0).ToArray();
                break;
            }

            return(nd);
        }
Example #23
0
        public void LinearRegression()
        {
            var np = new NumPyGeneric <double>();

            // the time array
            var time = np.linspace(0, 10, 1000);

            // the values over t - linear dependence with noice
            var values = time * 3 + 5 + np.random.randn(time.Data.Length);

            var A     = np.vstack(np.ones(new Shape(1000)), time);
            var A_T   = A.transpose();
            var A_T_A = A_T.dot(A);

            var A_PseudoInv = A.transpose().dot(A).inv();

            var param = A_PseudoInv.dot(A.transpose());

            //param = param.dot(param);
        }
Example #24
0
        public void amax()
        {
            var np = new NumPyGeneric <double>();

            //no axis
            var n  = np.arange(4).reshape(2, 2);
            var n1 = np.amax(n);

            Assert.IsTrue(n1[0] == 3);

            //2D with axis
            n1 = np.amax(n, 0);
            Assert.IsTrue(n1[0] == 2);
            Assert.IsTrue(n1[1] == 3);
            n1 = np.amax(n, 1);
            Assert.IsTrue(n1[0] == 1);
            Assert.IsTrue(n1[1] == 3);

            //3D
            n  = np.arange(24).reshape(4, 3, 2);
            n1 = np.amax(n, 0);
            Assert.IsTrue(n1[0, 1] == 19);
            Assert.IsTrue(n1[2, 1] == 23);
            Assert.IsTrue(n1[1, 1] == 21);
            n1 = np.amax(n, 1);
            Assert.IsTrue(n1[1, 1] == 11);
            Assert.IsTrue(n1[2, 1] == 17);
            Assert.IsTrue(n1[3, 0] == 22);

            //4D
            n  = np.arange(24).reshape(2, 3, 2, 2);
            n1 = np.amax(n, 1);
            Assert.IsTrue(n1[0, 0, 1] == 9);
            Assert.IsTrue(n1[1, 0, 1] == 21);
            Assert.IsTrue(n1[1, 1, 1] == 23);
            n1 = np.amax(n, 3);
            Assert.IsTrue(n1[0, 1, 1] == 7);
            Assert.IsTrue(n1[1, 1, 1] == 19);
            Assert.IsTrue(n1[1, 2, 1] == 23);
        }
Example #25
0
 public void Setup()
 {
     np = new NumPyGeneric <double>();
     nd = np.arange(1000 * 8 * 8 * 8).reshape(1000, 8, 8, 8);
 }
Example #26
0
        public void SimpleInt1D()
        {
            var np = new NumPyGeneric <int>().ones(new Shape(5));

            Assert.IsTrue(np.Data.Where(x => x == 1).ToArray().Length == 5);
        }
Example #27
0
        public void SimpleDouble3D()
        {
            var np = new NumPyGeneric <double>().ones(new Shape(5, 5, 5));

            Assert.IsTrue(np.Data.Where(x => x == 1).ToArray().Length == 125);
        }
Example #28
0
        public void MeanAxisMinus1()
        {
            var np = new NumPyGeneric <double>().array(new double[] { 1, 2, 3, 4 }).reshape(2, 2);

            Assert.IsTrue(Enumerable.SequenceEqual(np.Mean().Data, new double[] { 2.5 }));
        }