Esempio n. 1
0
        public static void Plot <T>(string filename, NumCIL.Generic.NdArray <T> array, Func <int, int, T, Color> encode, Color backgroundColor)
        {
            var shape = array.Shape;

            if (shape.Dimensions.Length != 2)
            {
                throw new Exception("Must be 2D array");
            }

            var w = (int)shape.Dimensions[0].Length;
            var h = (int)shape.Dimensions[1].Length;

            using (var bmp = new Bitmap(w, h))
            {
                using (var gc = System.Drawing.Graphics.FromImage(bmp))
                    gc.Clear(backgroundColor);

                using (var lb = new LockBitmap(bmp))
                    for (var y = 0; y < h; y++)
                    {
                        for (var x = 0; x < w; x++)
                        {
                            lb.SetPixel(x, y, encode(x, y, array.Value[y, x]));
                        }
                    }

                bmp.Save(filename, System.Drawing.Imaging.ImageFormat.Png);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Creates a new view
        /// </summary>
        public static TPointer CreateNewView(NumCIL.Generic.NdArray <TData> a)
        {
            var ac = a.DataAccessor;

            lock (PinnedArrayTracker.ExecuteLock)
            {
                if (ac is BohriumDataAccessorBase <TData, TPointer, TAccess> )
                {
                    var acp = ((BohriumDataAccessorBase <TData, TPointer, TAccess>)a.DataAccessor).GetArrayPointer();


                    return(Mapper.NewView(
                               acp,
                               (ulong)a.Shape.Dimensions.Length,
                               a.Shape.Offset,
                               a.Shape.Dimensions.Select(x => x.Length).ToArray(),
                               a.Shape.Dimensions.Select(x => x.Stride).ToArray()
                               ));
                }
                else
                {
                    TPointer res;
                    using (var acp = Mapper.NewEmpty((ulong)a.DataAccessor.Length))
                    {
                        res = Mapper.NewView(
                            acp,
                            (ulong)a.Shape.Dimensions.Length,
                            a.Shape.Offset,
                            a.Shape.Dimensions.Select(x => x.Length).ToArray(),
                            a.Shape.Dimensions.Select(x => x.Stride).ToArray()
                            );
                    }

                    Mapper.SetData(res, PinnedArrayTracker.CreatePinnedArray(a.DataAccessor.AsArray()));
                    return(res);
                }

                //Console.WriteLine("Created multi_array from NdArray: {0}", this.pointer.ToInt64());
            }
        }
Esempio n. 3
0
 public static void Plot <T>(string filename, NumCIL.Generic.NdArray <T> array, Func <int, int, T, Color> encode)
 {
     Plot(filename, array, encode, Color.White);
 }