DataTable GetDataTable(ndarray matrix) { if (matrix.ndim != 2) { throw new Exception("We only handle 2D arrays"); } Int32[] RawData = matrix.AsInt32Array(); int r = 0; DataTable dt = new DataTable(); for (int i = 0; i < matrix.dims[0]; i++) { dt.Columns.Add(); } for (int i = 0; i < matrix.dims[1]; i++) { var newRow = dt.NewRow(); for (int j = 0; j < matrix.dims[0]; j++) { newRow[j] = RawData[r]; r++; } dt.Rows.Add(newRow); } dt.AcceptChanges(); return(dt); }
private NDArray Slice(ndarray x, ndarray num_anchors, ndarray num_offsets) { var anchors = new List <int> { 0 }; anchors.AddRange(num_anchors.AsInt32Array()); var offsets = new List <int> { 0 }; offsets.AddRange(num_offsets.AsInt32Array()); var ret = new List <NDArray>(); foreach (var i in Enumerable.Range(0, (int)num_anchors.Size)) { var y = (ndarray)x[":", $"{offsets[i]}:{offsets[i + 1]}", $"{anchors[i]}:{anchors[i + 1]}", ":"]; ret.Add(y.reshape(new shape(0, -3, -1))); } return(nd.Concat(ret, dim: 1)); }