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);
        }
Esempio n. 2
0
        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));
        }