Пример #1
0
        public NDarray <T> array <T>(T[,,] @object, Dtype dtype = null, bool?copy = null, string order = null, bool?subok = null, int?ndmin = null)
        {
            var d1_array = @object.Cast <T>().ToArray();
            var type     = d1_array.GetDtype();
            //if (dtype != null && type != dtype)
            //    throw new NotImplementedException("Type of the array is different from specified dtype. Data conversion is not supported (yet)");
            var  ndarray = this.empty(new Shape(@object.GetLength(0), @object.GetLength(1), @object.GetLength(2)), dtype: dtype ?? type, order: order); // todo: check out the other parameters
            long ptr     = ndarray.PyObject.ctypes.data;

            switch ((object)d1_array)
            {
            case byte[] a: Marshal.Copy(a, 0, new IntPtr(ptr), a.Length); break;

            case short[] a: Marshal.Copy(a, 0, new IntPtr(ptr), a.Length); break;

            case int[] a: Marshal.Copy(a, 0, new IntPtr(ptr), a.Length); break;

            case long[] a: Marshal.Copy(a, 0, new IntPtr(ptr), a.Length); break;

            case float[] a: Marshal.Copy(a, 0, new IntPtr(ptr), a.Length); break;

            case double[] a: Marshal.Copy(a, 0, new IntPtr(ptr), a.Length); break;

            case bool[] a:
                var     bytes = a.Select(x => (byte)(x ? 1 : 0)).ToArray();
                Marshal.Copy(bytes, 0, new IntPtr(ptr), a.Length);
                break;
            }
            return(new NDarray <T>(ndarray));
        }
Пример #2
0
        public static NDarray <T> array <T>(T[,,] data, Dtype dtype = null, bool?copy = null, string order = null, bool?subok = null, int?ndmin = null)
        {
            var d1_array = data.Cast <T>().ToArray();
            var type     = d1_array.GetDtype();
            var ndarray  = np.empty(new Shape(data.GetLength(0), data.GetLength(1), data.GetLength(2)), dtype: dtype ?? type, order: order); // todo: check out the other parameters

            if (data.Length == 0)
            {
                return(new NDarray <T>(ndarray));
            }
            long ptr = ndarray.PyObject.ctypes.data;

            switch ((object)d1_array)
            {
            case char[] a: Marshal.Copy(a, 0, new IntPtr(ptr), a.Length); break;

            case byte[] a: Marshal.Copy(a, 0, new IntPtr(ptr), a.Length); break;

            case short[] a: Marshal.Copy(a, 0, new IntPtr(ptr), a.Length); break;

            case int[] a: Marshal.Copy(a, 0, new IntPtr(ptr), a.Length); break;

            case long[] a: Marshal.Copy(a, 0, new IntPtr(ptr), a.Length); break;

            case float[] a: Marshal.Copy(a, 0, new IntPtr(ptr), a.Length); break;

            case double[] a: Marshal.Copy(a, 0, new IntPtr(ptr), a.Length); break;

            case bool[] a:
                var     bytes = a.Select(x => (byte)(x ? 1 : 0)).ToArray();
                Marshal.Copy(bytes, 0, new IntPtr(ptr), a.Length);
                break;
            }
            return(new NDarray <T>(ndarray));
        }
Пример #3
0
        public static NDarray <T> array <T>(T[,,] data, Dtype dtype = null, bool?copy = null, string order = null, bool?subok = null, int?ndmin = null) where T : struct
        {
            var __self__ = self;
            var d1_array = data.Cast <T>().ToArray();
            var shape    = new Shape(data.GetLength(0), data.GetLength(1), data.GetLength(2));
            var ndarray  = array <T>(d1_array, dtype, copy, order, subok, ndmin);

            return(new NDarray <T>(ndarray.reshape(shape)));
        }
Пример #4
0
        public static NDArray array <T>(T[,,] data) where T : unmanaged
        {
            if (data == null)
            {
                throw new ArgumentNullException(nameof(data));
            }

            return(new NDArray(ArraySlice.FromArray(data.Cast <T>().ToArray()), new Shape(data.GetLength(0), data.GetLength(1), data.GetLength(2))));
        }
Пример #5
0
        public static NDarray <T> array <T>(T[,,] data, Dtype dtype = null, bool?copy = null, string order = null, bool?subok = null, int?ndmin = null)
        {
            var __self__ = self;
            var d1_array = data.Cast <T>().ToArray();
            var type     = d1_array.GetDtype();
            var ndarray  = np.empty(new Shape(data.GetLength(0), data.GetLength(1), data.GetLength(2)), dtype: type, order: order);

            if (data.Length == 0)
            {
                return(new NDarray <T>(ndarray));
            }
            long ptr = ndarray.PyObject.ctypes.data;

            switch ((object)d1_array)
            {
            case char[] a: Marshal.Copy(a, 0, new IntPtr(ptr), a.Length); break;

            case byte[] a: Marshal.Copy(a, 0, new IntPtr(ptr), a.Length); break;

            case short[] a: Marshal.Copy(a, 0, new IntPtr(ptr), a.Length); break;

            case int[] a: Marshal.Copy(a, 0, new IntPtr(ptr), a.Length); break;

            case long[] a: Marshal.Copy(a, 0, new IntPtr(ptr), a.Length); break;

            case float[] a: Marshal.Copy(a, 0, new IntPtr(ptr), a.Length); break;

            case double[] a: Marshal.Copy(a, 0, new IntPtr(ptr), a.Length); break;

            case bool[] a:
                var     bytes = a.Select(x => (byte)(x ? 1 : 0)).ToArray();
                Marshal.Copy(bytes, 0, new IntPtr(ptr), a.Length);
                break;
            }
            if (dtype != null || subok != null || ndmin != null)
            {
                return(new NDarray <T>(np.array(ndarray, dtype: dtype, copy: false, subok: subok, ndmin: ndmin)));
            }
            return(new NDarray <T>(ndarray));
        }
Пример #6
0
 public MultiDimensionalArray(T[,,] values, params int[] shape)
     : this(false, false, default(T), new List <T>(values.Cast <T>()), GetShape((IList)values, shape))
 {
 }
Пример #7
0
 static public IEnumerable <T> Where <T>(this T[, , ] array, Func <T, bool> predicate)
 {
     return(array.Cast <T>().Where(predicate));
 }
Пример #8
0
        public static NDArray array <T>(T[,,] data)
        {
            var array = data.Cast <T>().ToArray(); //todo! not use ienumerable.

            return(new NDArray(array, new Shape(data.GetLength(0), data.GetLength(1), data.GetLength(2))));
        }
Пример #9
0
        public static List <T> To1DList <T>(this T[,,] arr)
        {
            List <T> list = arr.Cast <T>().ToList();

            return(list);
        }
Пример #10
0
        public static NDArray array <T>(T[,,] data)
        {
            var array = data.Cast <T>().ToArray();

            return(new NDArray(array, new Shape(data.GetLength(0), data.GetLength(1), data.GetLength(2))));
        }
Пример #11
0
 public IEnumerator <T> GetEnumerator()
 {
     return(blocks.Cast <T>().GetEnumerator());
 }