def sign_max(X, axis = 0, n_jobs = 1):
    """
    [Added 19/11/2018] [Edited 24/11/2018 Uses NUMBA]
    Returns the sign of the maximum absolute value of an axis of X.

    input:      1 argument, 2 optional
    ----------------------------------------------------------
    X:          Matrix X to be processed. Must be 2D array.
    axis:       Default = 0. 0 = column-wise. 1 = row-wise.
    n_jobs:     Default = 1. Uses multiple CPUs if n*p > 20,000^2.

    returns:    sign array of -1,1
    ----------------------------------------------------------
    """ 
    n, p = X.shape
    amax = f"amax_{axis}_parallel" if (n_jobs != 1 and n*p > 4e8) else f"amax_{axis}"
    return eval(amax)(X, n, p)