norm(a, ord=None, axis=None, keepdims=False, check_finite=True)
This function is able to return one of eight different matrix norms, or one of an infinite number of vector norms (described below), depending on the value of the ord
parameter. For tensors with rank different from 1 or 2, only :None:None:`ord=None`
is supported.
For values of ord <= 0
, the result is, strictly speaking, not a mathematical 'norm', but it may still be useful for various numerical purposes.
The following norms can be calculated:
===== ============================ ========================== ord norm for matrices norm for vectors ===== ============================ ========================== None Frobenius norm 2-norm 'fro' Frobenius norm -- 'nuc' nuclear norm -- inf max(sum(abs(a), axis=1)) max(abs(a)) -inf min(sum(abs(a), axis=1)) min(abs(a)) 0 -- sum(a != 0) 1 max(sum(abs(a), axis=0)) as below -1 min(sum(abs(a), axis=0)) as below 2 2-norm (largest sing. value) as below -2 smallest singular value as below other -- sum(abs(a)**ord)**(1./ord) ===== ============================ ==========================
The Frobenius norm is given by :
$||A||_F = [\sum_{i,j} abs(a_{i,j})^2]^{1/2}$
The nuclear norm is the sum of the singular values.
Both the Frobenius and nuclear norm orders are only defined for matrices.
Input array. If :None:None:`axis`
is None, a
must be 1-D or 2-D, unless :None:None:`ord`
is None. If both :None:None:`axis`
and :None:None:`ord`
are None, the 2-norm of a.ravel
will be returned.
Order of the norm (see table under Notes
). inf means NumPy's :None:None:`inf`
object.
If :None:None:`axis`
is an integer, it specifies the axis of a
along which to compute the vector norms. If :None:None:`axis`
is a 2-tuple, it specifies the axes that hold 2-D matrices, and the matrix norms of these matrices are computed. If :None:None:`axis`
is None then either a vector norm (when a
is 1-D) or a matrix norm (when a
is 2-D) is returned.
If this is set to True, the axes which are normed over are left in the result as dimensions with size one. With this option the result will broadcast correctly against the original a
.
Whether to check that the input matrix contains only finite numbers. Disabling may give a performance gain, but may result in problems (crashes, non-termination) if the inputs do contain infinities or NaNs.
Norm of the matrix or vector(s).
Matrix or vector norm.
>>> from scipy.linalg import norm
... a = np.arange(9) - 4.0
... a array([-4., -3., -2., -1., 0., 1., 2., 3., 4.])
>>> b = a.reshape((3, 3))
... b array([[-4., -3., -2.], [-1., 0., 1.], [ 2., 3., 4.]])
>>> norm(a) 7.745966692414834
>>> norm(b) 7.745966692414834
>>> norm(b, 'fro') 7.745966692414834
>>> norm(a, np.inf) 4
>>> norm(b, np.inf) 9
>>> norm(a, -np.inf) 0
>>> norm(b, -np.inf) 2
>>> norm(a, 1) 20
>>> norm(b, 1) 7
>>> norm(a, -1) -4.6566128774142013e-010
>>> norm(b, -1) 6
>>> norm(a, 2) 7.745966692414834
>>> norm(b, 2) 7.3484692283495345
>>> norm(a, -2) 0
>>> norm(b, -2) 1.8570331885190563e-016
>>> norm(a, 3) 5.8480354764257312
>>> norm(a, -3) 0See :
The following pages refer to to this document either explicitly or contain code examples using this.
scipy.linalg._misc.norm
Hover to see nodes names; edges to Self not shown, Caped at 50 nodes.
Using a canvas is more power efficient and can get hundred of nodes ; but does not allow hyperlinks; , arrows or text (beyond on hover)
SVG is more flexible but power hungry; and does not scale well to 50 + nodes.
All aboves nodes referred to, (or are referred from) current nodes; Edges from Self to other have been omitted (or all nodes would be connected to the central node "self" which is not useful). Nodes are colored by the library they belong to, and scaled with the number of references pointing them