//To Do: store this matrix efficiently. public unsafe void Refit(int[,] leafPreds) { Check.NonNull(leafPreds, nameof(leafPreds)); var len1 = leafPreds.GetLength(0);//nrow var len2 = leafPreds.GetLength(1);//ncol var data = new int[len1 * len2]; for (int i = 0; i< len1; ++i) for(int j = 0; j < len2; ++j) { data[i * len2 + j] = leafPreds[i, j]; } fixed (int *dataPtr = data) PInvokeException.Check(PInvoke.BoosterRefit(Handle,dataPtr,len1,len2), nameof(PInvoke.BoosterRefit)); }