dask 2021.10.0

NotesParametersReturns
norm(x, ord=None, axis=None, keepdims=False)

This docstring was copied from numpy.linalg.norm.

Some inconsistencies with the Dask version may exist.

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

This example is valid syntax, but we were not able to check execution
>>> from numpy import linalg as LA  # doctest: +SKIP
... a = np.arange(9) - 4 # doctest: +SKIP
... a # doctest: +SKIP array([-4, -3, -2, ..., 2, 3, 4])
This example is valid syntax, but we were not able to check execution
>>> b = a.reshape((3, 3))  # doctest: +SKIP
... b # doctest: +SKIP array([[-4, -3, -2], [-1, 0, 1], [ 2, 3, 4]])
This example is valid syntax, but we were not able to check execution
>>> LA.norm(a)  # doctest: +SKIP
7.745966692414834
This example is valid syntax, but we were not able to check execution
>>> LA.norm(b)  # doctest: +SKIP
7.745966692414834
This example is valid syntax, but we were not able to check execution
>>> LA.norm(b, 'fro')  # doctest: +SKIP
7.745966692414834
This example is valid syntax, but we were not able to check execution
>>> LA.norm(a, np.inf)  # doctest: +SKIP
4.0
This example is valid syntax, but we were not able to check execution
>>> LA.norm(b, np.inf)  # doctest: +SKIP
9.0
This example is valid syntax, but we were not able to check execution
>>> LA.norm(a, -np.inf)  # doctest: +SKIP
0.0
This example is valid syntax, but we were not able to check execution
>>> LA.norm(b, -np.inf)  # doctest: +SKIP
2.0
This example is valid syntax, but we were not able to check execution
>>> LA.norm(a, 1)  # doctest: +SKIP
20.0
This example is valid syntax, but we were not able to check execution
>>> LA.norm(b, 1)  # doctest: +SKIP
7.0
This example is valid syntax, but we were not able to check execution
>>> LA.norm(a, -1)  # doctest: +SKIP
-4.6566128774142013e-010
This example is valid syntax, but we were not able to check execution
>>> LA.norm(b, -1)  # doctest: +SKIP
6.0
This example is valid syntax, but we were not able to check execution
>>> LA.norm(a, 2)  # doctest: +SKIP
7.745966692414834
This example is valid syntax, but we were not able to check execution
>>> LA.norm(b, 2)  # doctest: +SKIP
7.3484692283495345
This example is valid syntax, but we were not able to check execution
>>> LA.norm(a, -2)  # doctest: +SKIP
0.0
This example is valid syntax, but we were not able to check execution
>>> LA.norm(b, -2)  # doctest: +SKIP
1.8570331885190563e-016 # may vary
This example is valid syntax, but we were not able to check execution
>>> LA.norm(a, 3)  # doctest: +SKIP
5.8480354764257312 # may vary
This example is valid syntax, but we were not able to check execution
>>> LA.norm(a, -3)  # doctest: +SKIP
0.0

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

This example is valid syntax, but we were not able to check execution
>>> c = np.array([[ 1, 2, 3],  # doctest: +SKIP
...  [-1, 1, 4]])
... LA.norm(c, axis=0) # doctest: +SKIP array([ 1.41421356, 2.23606798, 5. ])
This example is valid syntax, but we were not able to check execution
>>> LA.norm(c, axis=1)  # doctest: +SKIP
array([ 3.74165739,  4.24264069])
This example is valid syntax, but we were not able to check execution
>>> LA.norm(c, ord=1, axis=1)  # doctest: +SKIP
array([ 6.,  6.])

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

This example is valid syntax, but we were not able to check execution
>>> m = np.arange(8).reshape(2,2,2)  # doctest: +SKIP
... LA.norm(m, axis=(1,2)) # doctest: +SKIP array([ 3.74165739, 11.22497216])
This example is valid syntax, but we were not able to check execution
>>> LA.norm(m[0, :, :]), LA.norm(m[1, :, :])  # doctest: +SKIP
(3.7416573867739413, 11.224972160321824)
See :

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


File: /dask/array/linalg.py#1431
type: <class 'function'>
Commit: