numpy 1.22.4 Pypi GitHub Homepage
Other Docs
NotesParametersReturnsBackRef
norm(x, ord=None, axis=None, keepdims=False)

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.

Notes

For values of ord < 1 , 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(x), axis=1)) max(abs(x)) -inf min(sum(abs(x), axis=1)) min(abs(x)) 0 -- 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 sing. value) as below -2 smallest singular value as below other -- sum(abs(x)**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 and raise a ValueError when x.ndim != 2 .

Parameters

x : array_like

Input array. If :None:None:`axis` is None, x 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 x.ravel will be returned.

ord : {non-zero int, inf, -inf, 'fro', 'nuc'}, optional

Order of the norm (see table under Notes ). inf means numpy's :None:None:`inf` object. The default is None.

axis : {None, int, 2-tuple of ints}, optional.

If :None:None:`axis` is an integer, it specifies the axis of x 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 x is 1-D) or a matrix norm (when x is 2-D) is returned. The default is None.

versionadded
keepdims : bool, optional

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 x.

versionadded

Returns

n : float or ndarray

Norm of the matrix or vector(s).

Matrix or vector norm.

See Also

scipy.linalg.norm

Similar function in SciPy.

Examples

>>> from numpy import linalg as LA
... a = np.arange(9) - 4
... a array([-4, -3, -2, ..., 2, 3, 4])
>>> b = a.reshape((3, 3))
... b array([[-4, -3, -2], [-1, 0, 1], [ 2, 3, 4]])
>>> LA.norm(a)
7.745966692414834
>>> LA.norm(b)
7.745966692414834
>>> LA.norm(b, 'fro')
7.745966692414834
>>> LA.norm(a, np.inf)
4.0
>>> LA.norm(b, np.inf)
9.0
>>> LA.norm(a, -np.inf)
0.0
>>> LA.norm(b, -np.inf)
2.0
>>> LA.norm(a, 1)
20.0
>>> LA.norm(b, 1)
7.0
>>> LA.norm(a, -1)
-4.6566128774142013e-010
>>> LA.norm(b, -1)
6.0
>>> LA.norm(a, 2)
7.745966692414834
>>> LA.norm(b, 2)
7.3484692283495345
>>> LA.norm(a, -2)
0.0
>>> LA.norm(b, -2)
1.8570331885190563e-016 # may vary
>>> LA.norm(a, 3)
5.8480354764257312 # may vary
>>> LA.norm(a, -3)
0.0

Using the :None:None:`axis` argument to compute vector norms:

>>> c = np.array([[ 1, 2, 3],
...  [-1, 1, 4]])
... LA.norm(c, axis=0) array([ 1.41421356, 2.23606798, 5. ])
>>> LA.norm(c, axis=1)
array([ 3.74165739,  4.24264069])
>>> LA.norm(c, ord=1, axis=1)
array([ 6.,  6.])

Using the :None:None:`axis` argument to compute matrix norms:

>>> m = np.arange(8).reshape(2,2,2)
... LA.norm(m, axis=(1,2)) array([ 3.74165739, 11.22497216])
>>> LA.norm(m[0, :, :]), LA.norm(m[1, :, :])
(3.7416573867739413, 11.224972160321824)
See :

Back References

The following pages refer to to this document either explicitly or contain code examples using this.

scipy.linalg._decomp_svd.svdvals numpy.linalg.linalg._multi_svd_norm scipy.spatial._qhull.HalfspaceIntersection scipy.sparse.linalg._onenormest.onenormest numpy.linalg.cond

Local connectivity graph

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


GitHub : /numpy/linalg/linalg.py#2349
type: <class 'function'>
Commit: