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)