/// <summary> /// Gets the lower triangular part of a matrix. /// </summary> /// public static T[][] GetLowerTriangle <T>(this T[][] matrix, bool includeDiagonal = true) { int s = includeDiagonal ? 1 : 0; var r = Jagged.CreateAs(matrix); for (int i = 0; i < matrix.Rows(); i++) { for (int j = 0; j < i + s; j++) { r[i][j] = matrix[i][j]; } } ; return(r); }
public static T[][] KHot <T>(bool[][] mask) { return(KHot <T>(mask, Jagged.CreateAs <bool, T>(mask))); }
///// <summary> ///// Determines whether a jagged array is a rectangular ///// matrix (containing all inner arrays of same size). ///// </summary> ///// //public static bool IsRectangular<T>(this T[][] array) //{ // if (array.Length == 0) // return true; // int cols = array[0].Length; // for (int i = 0; i < array.Length; i++) // { // if (array[0].Length != cols) // return false; // } // return true; //} #endregion #region Operation Mapping (Apply) /// <summary> /// Applies a function to every element of the array. /// </summary> /// public static TResult[][] Apply <TInput, TResult>(this TInput[][] matrix, Func <TInput, int, int, TResult> func) { return(Apply(matrix, func, Jagged.CreateAs <TInput, TResult>(matrix))); }