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); } }
/// <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()); } }
public static void Plot <T>(string filename, NumCIL.Generic.NdArray <T> array, Func <int, int, T, Color> encode) { Plot(filename, array, encode, Color.White); }