예제 #1
0
        /// <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);
        }
예제 #2
0
 public static T[][] KHot <T>(bool[][] mask)
 {
     return(KHot <T>(mask, Jagged.CreateAs <bool, T>(mask)));
 }
예제 #3
0
        ///// <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)));
        }