Ejemplo n.º 1
0
def norm(x, order=None):
    '''Matrix or vector norm
    x -- input array
    ord -- None  = Frobenius               | 2-norm
           'fro' = Frobenius               | n/a
           inf   = max(sum(abs(x),axis=1)) | max(abs(x))
           -inf  = min(sum(abs(x),axis=1)) | min(abs(x))
           0     = n/a                     | sum(x != 0)
           1     = max(sum(abs(x),axis=0)) | as below
           -1    = min(sum(abs(x),axis=0)) | as below
           2     = 2-norm (largest s.v.)   | as below
           -2    = smallest singular value | as below
           other = n/a                     | sum(abs(x)**ord)**(1./ord)
    Return norm
    '''
    if order is None:
        return _linalg.norm(x)
    if order == 'fro':
        order = _normorder.FROBENIUS  # @UndefinedVariable
    elif _isinf(order):
        if order > 0:
            order = _normorder.POS_INFINITY  # @UndefinedVariable
        else:
            order = _normorder.NEG_INFINITY  # @UndefinedVariable

    try:
        return _linalg.norm(x, order)
    except Exception, e:
        raise LinAlgError(e)
Ejemplo n.º 2
0
def norm(x, order=None):
    """Matrix or vector norm
    x -- input array
    ord -- None  = Frobenius               | 2-norm
           'fro' = Frobenius               | n/a
           inf   = max(sum(abs(x),axis=1)) | max(abs(x))
           -inf  = min(sum(abs(x),axis=1)) | min(abs(x))
           0     = n/a                     | sum(x != 0)
           1     = max(sum(abs(x),axis=0)) | as below
           -1    = min(sum(abs(x),axis=0)) | as below
           2     = 2-norm (largest s.v.)   | as below
           -2    = smallest singular value | as below
           other = n/a                     | sum(abs(x)**ord)**(1./ord)
    Return norm
    """
    if order is None:
        return _linalg.norm(x)
    if order == "fro":
        order = _normorder.FROBENIUS  # @UndefinedVariable
    elif _isinf(order):
        if order > 0:
            order = _normorder.POS_INFINITY  # @UndefinedVariable
        else:
            order = _normorder.NEG_INFINITY  # @UndefinedVariable

    try:
        return _linalg.norm(x, order)
    except Exception, e:
        raise LinAlgError(e)
Ejemplo n.º 3
0
def tensordot(a, b, axes=2):
    '''Tensor dot product of two arrays
    '''
    if isinstance(axes, int):
        bx = range(axes)
        ao = a.getRank() - axes
        ax = [ ao + i for i in bx ]
    else:
        t = type(axes)
        if t is _types.ListType or t is _types.TupleType:
            if len(axes) == 0:
                raise ValueError, "Given axes sequence should be non-empty"

            if len(axes) == 1:
                ax = axes[0]
                bx = axes[0]
            else:
                ax = axes[0]
                bx = axes[1]

            ta = type(ax)
            tal = ta is _types.ListType or ta is _types.TupleType
            tb = type(bx)
            tbl = tb is _types.ListType or tb is _types.TupleType
            if tal != tbl:
                if tal:
                    bx = list(bx)
                else:
                    ax = list(ax)
        else:
            raise ValueError, "Given axes has wrong type"

    return _linalg.tensorDotProduct(a, b, ax, bx)
Ejemplo n.º 4
0
def svd(a, full_matrices=1, compute_uv=1):
    """Singular value decomposition
    """
    try:
        return _linalg.calcSingularValueDecomposition(a)
    except Exception, e:
        raise LinAlgError(e)
Ejemplo n.º 5
0
def tensordot(a, b, axes=2):
    '''Tensor dot product of two arrays
    '''
    if isinstance(axes, int):
        bx = range(axes)
        ao = a.getRank() - axes
        ax = [ao + i for i in bx]
    else:
        t = type(axes)
        if t is _types.ListType or t is _types.TupleType:
            if len(axes) == 0:
                raise ValueError, "Given axes sequence should be non-empty"

            if len(axes) == 1:
                ax = axes[0]
                bx = axes[0]
            else:
                ax = axes[0]
                bx = axes[1]

            ta = type(ax)
            tal = ta is _types.ListType or ta is _types.TupleType
            tb = type(bx)
            tbl = tb is _types.ListType or tb is _types.TupleType
            if tal != tbl:
                if tal:
                    bx = list(bx)
                else:
                    ax = list(ax)
        else:
            raise ValueError, "Given axes has wrong type"

    return _linalg.tensorDotProduct(a, b, ax, bx)
Ejemplo n.º 6
0
def trace(a, offset=0, axis1=0, axis2=1, dtype=None):
    if dtype is None:
        dtype = a.getDtype()
    else:
        dtype = dtype.value

    return _linalg.trace(a, offset).cast(dtype)
Ejemplo n.º 7
0
def svd(a, full_matrices=1, compute_uv=1):
    '''Singular value decomposition
    '''
    try:
        return _linalg.calcSingularValueDecomposition(a)
    except Exception, e:
        raise LinAlgError(e)
Ejemplo n.º 8
0
def qr(a, mode='full'):
    '''QR decomposition
    '''
    try:
        return _linalg.calcQRDecomposition(a)
    except Exception, e:
        raise LinAlgError(e)
Ejemplo n.º 9
0
def cholesky(a):
    '''Cholesky decomposition
    '''
    try:
        return _linalg.calcCholeskyDecomposition(a)
    except Exception, e:
        raise LinAlgError(e)
Ejemplo n.º 10
0
def eigvals(a):
    '''Eigenvalues
    '''
    try:
        return _linalg.calcEigenvalues(a)
    except Exception, e:
        raise LinAlgError(e)
Ejemplo n.º 11
0
def eig(a):
    '''Eigen decomposition
    '''
    try:
        return _linalg.calcEigenDecomposition(a)
    except Exception, e:
        raise LinAlgError(e)
Ejemplo n.º 12
0
def matrix_power(a, n):
    '''Raise matrix to given power
    '''
    try:
        return _linalg.power(a, n)
    except Exception, e:
        raise LinAlgError(e)
Ejemplo n.º 13
0
def pinv(a, rcond=1e-15):
    '''Pseudo-inverse of array
    '''
    try:
        return _linalg.calcPseudoInverse(a)
    except Exception, e:
        raise LinAlgError(e)
Ejemplo n.º 14
0
def inv(a):
    '''Inverse of square array
    '''
    try:
        return _linalg.calcInverse(a)
    except Exception, e:
        raise LinAlgError(e)
Ejemplo n.º 15
0
def solve(a, b):
    '''Solve equation a x = b
    '''
    try:
        return _linalg.solve(a, b)
    except Exception, e:
        raise LinAlgError(e)
Ejemplo n.º 16
0
def trace(a, offset=0, axis1=0, axis2=1, dtype=None):
    if dtype is None:
        dtype = a.getDtype()
    else:
        dtype = dtype.value

    return _linalg.trace(a, offset).cast(dtype)
Ejemplo n.º 17
0
def qr(a, mode="full"):
    """QR decomposition
    """
    try:
        return _linalg.calcQRDecomposition(a)
    except Exception, e:
        raise LinAlgError(e)
Ejemplo n.º 18
0
def cholesky(a):
    """Cholesky decomposition
    """
    try:
        return _linalg.calcCholeskyDecomposition(a)
    except Exception, e:
        raise LinAlgError(e)
Ejemplo n.º 19
0
def eig(a):
    """Eigen decomposition
    """
    try:
        return _linalg.calcEigenDecomposition(a)
    except Exception, e:
        raise LinAlgError(e)
Ejemplo n.º 20
0
def eigvals(a):
    """Eigenvalues
    """
    try:
        return _linalg.calcEigenvalues(a)
    except Exception, e:
        raise LinAlgError(e)
Ejemplo n.º 21
0
def pinv(a, rcond=1e-15):
    """Pseudo-inverse of array
    """
    try:
        return _linalg.calcPseudoInverse(a)
    except Exception, e:
        raise LinAlgError(e)
Ejemplo n.º 22
0
def matrix_power(a, n):
    """Raise matrix to given power
    """
    try:
        return _linalg.power(a, n)
    except Exception, e:
        raise LinAlgError(e)
Ejemplo n.º 23
0
def inv(a):
    """Inverse of square array
    """
    try:
        return _linalg.calcInverse(a)
    except Exception, e:
        raise LinAlgError(e)
Ejemplo n.º 24
0
def solve(a, b):
    """Solve equation a x = b
    """
    try:
        return _linalg.solve(a, b)
    except Exception, e:
        raise LinAlgError(e)
Ejemplo n.º 25
0
def det(a):
    """Determinant
    """
    try:
        return _linalg.calcDeterminant(a)
    except Exception, e:
        raise LinAlgError(e)
Ejemplo n.º 26
0
def det(a):
    '''Determinant
    '''
    try:
        return _linalg.calcDeterminant(a)
    except Exception, e:
        raise LinAlgError(e)
Ejemplo n.º 27
0
def cross(a, b, axisa=-1, axisb=-1, axisc=-1, axis=None):
    '''Cross product of two (arrays of vectors)
    
    a -- first vector
    b -- second vector
    axisa -- axis of a that defines the vector(s)
    axisb -- axis of b that defines the vector(s)
    axisc -- axis of c that will contain the cross product(s)
    axis -- override all values of axis values
    '''
    if axis is not None:
        axisa = axisb = axisc = axis

        return _linalg.crossProduct(a, b, axisa, axisb, axisc)
Ejemplo n.º 28
0
def cross(a, b, axisa=-1, axisb=-1, axisc=-1, axis=None):
    '''Cross product of two (arrays of vectors)
    
    a -- first vector
    b -- second vector
    axisa -- axis of a that defines the vector(s)
    axisb -- axis of b that defines the vector(s)
    axisc -- axis of c that will contain the cross product(s)
    axis -- override all values of axis values
    '''
    if axis is not None:
        axisa = axisb = axisc = axis

    return _linalg.crossProduct(a, b, axisa, axisb, axisc)
Ejemplo n.º 29
0
def cond(a, order=None):
    """Condition number
    x -- input array
    ord -- None  = 2-norm computed directly using SVD
           'fro' = Frobenius norm
           inf   = max(sum(abs(x),axis=1))
           -inf  = min(sum(abs(x),axis=1))
           0     = n/a                     | sum(x != 0)
           1     = max(sum(abs(x),axis=0))
           -1    = min(sum(abs(x),axis=0))
           2     = 2-norm (largest s.v.)  
           -2    = smallest singular value
           other = n/a                    
    Return norm
    """
    if order is None:
        try:
            return _linalg.calcConditionNumber(_jinput(a))
        except Exception, e:
            raise LinAlgError(e)
Ejemplo n.º 30
0
def cond(a, order=None):
    '''Condition number
    x -- input array
    ord -- None  = 2-norm computed directly using SVD
           'fro' = Frobenius norm
           inf   = max(sum(abs(x),axis=1))
           -inf  = min(sum(abs(x),axis=1))
           0     = n/a                     | sum(x != 0)
           1     = max(sum(abs(x),axis=0))
           -1    = min(sum(abs(x),axis=0))
           2     = 2-norm (largest s.v.)  
           -2    = smallest singular value
           other = n/a                    
    Return norm
    '''
    if order is None:
        try:
            return _linalg.calcConditionNumber(_jinput(a))
        except Exception, e:
            raise LinAlgError(e)
Ejemplo n.º 31
0
def dot(a, b):
    '''Dot product of two arrays'''
    return _linalg.dotProduct(a, b)
Ejemplo n.º 32
0
def vdot(a, b):
    '''Dot product of two vectors with first vector conjugated if complex'''
    return _linalg.dotProduct(conjugate(a.flatten()), b.flatten())
Ejemplo n.º 33
0
def inner(a, b):
    '''Inner product of two arrays (sum product over last dimensions)'''
    return _linalg.tensorDotProduct(a, b, -1, -1)
Ejemplo n.º 34
0
def vdot(a, b):
    '''Dot product of two vectors with first vector conjugated if complex'''
    return _linalg.dotProduct(conjugate(a.flatten()), b.flatten())
Ejemplo n.º 35
0
def dot(a, b):
    '''Dot product of two arrays'''
    return _linalg.dotProduct(a, b)
Ejemplo n.º 36
0
def inner(a, b):
    '''Inner product of two arrays (sum product over last dimensions)'''
    return _linalg.tensorDotProduct(a, b, -1, -1)