#NEWLINE# def tril( m , k = 0 ) : #NEWLINE# #INDENT# '\n    Lower triangle of an array.\n\n    Return a copy of an array with elements above the `k`-th diagonal zeroed.\n\n    Parameters\n    ----------\n    m : array_like, shape (M, N)\n        Input array.\n    k : int\n        Diagonal above which to zero elements.\n        `k = 0` is the main diagonal, `k < 0` is below it and `k > 0` is above.\n\n    Returns\n    -------\n    L : ndarray, shape (M, N)\n        Lower triangle of `m`, of same shape and data-type as `m`.\n\n    See Also\n    --------\n    triu\n\n    Examples\n    --------\n    >>> np.tril([[1,2,3],[4,5,6],[7,8,9],[10,11,12]], -1)\n    array([[ 0,  0,  0],\n           [ 4,  0,  0],\n           [ 7,  8,  0],\n           [10, 11, 12]])\n\n    ' #NEWLINE# m = asanyarray ( m ) #NEWLINE# out = multiply ( tri ( m . shape [ 0 ] , m . shape [ 1 ] , k = k , dtype = int ) , m ) #NEWLINE# return out