linalg.norm
Description
Matrix or vector norm.
This function is able to return one of eight different matrix norms, or one of an infinite number of vector norms (described in Table 1), depending on the value of the ord parameter.
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)) |
sum(abs(x)**ord)**(1./ord) |
-1 |
min(sum(abs(x), axis=0)) |
sum(abs(x)**ord)**(1./ord) |
2 |
2-norm (largest singular value) |
sum(abs(x)**ord)**(1./ord) |
-2 |
Smallest singular value |
sum(abs(x)**ord)**(1./ord) |
Other |
- |
sum(abs(x)**ord)**(1./ord) |
Mandatory Input Parameters
Parameter |
Type |
Description |
|---|---|---|
x |
array_like |
Input array
|
Optional Input Parameters
Parameter |
Type |
Default Value |
Description |
|---|---|---|---|
ord |
{non-zero int, inf, -inf, 'fro', 'nuc'} |
None |
For details, see Table 1. |
axis |
{None, int, 2-tuple of ints} |
None |
|
keepdims |
bool |
False |
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. |
Return Value
Type |
Description |
|---|---|
float or ndarray |
Matrix or vector norm. |
Examples
>>> import numpy as np
>>> a = np.arange(9) - 4
>>> 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]])
>>>
>>> np.linalg.norm(a)
7.745966692414834
>>> np.linalg.norm(b)
7.745966692414834
>>> np.linalg.norm(b, 'fro')
7.745966692414834
>>> np.linalg.norm(a, np.inf)
4.0
>>> np.linalg.norm(b, np.inf)
9.0
>>> np.linalg.norm(a, -np.inf)
0.0
>>> np.linalg.norm(b, -np.inf)
2.0
>>>
>>> np.linalg.norm(a, 1)
20.0
>>> np.linalg.norm(b, 1)
7.0
>>> np.linalg.norm(b, -1)
6.0
>>> np.linalg.norm(a, 2)
7.745966692414834
>>> np.linalg.norm(b, 2)
7.348469228349533
>>> np.linalg.norm(a, -2)
0.0
>>> np.linalg.norm(b, -2)
3.757577037301703e-16
>>>
>>> c = np.array([[1,2,3], [-1,1,4]])
>>> np.linalg.norm(c, axis=0)
array([1.41421356, 2.23606798, 5. ])
>>> np.linalg.norm(c, axis=1)
array([3.74165739, 4.24264069])
>>> np.linalg.norm(c, ord=1, axis=1)
array([6., 6.])
>>>
>>>
>>> m = np.arange(8).reshape(2,2,2)
>>> m
array([[[0, 1],
[2, 3]],
[[4, 5],
[6, 7]]])
>>> np.linalg.norm(m, axis=(1,2))
array([ 3.74165739, 11.22497216])
>>> np.linalg.norm(m[0, :, :])
3.7416573867739413
>>> np.linalg.norm(m[1, :, :])
11.224972160321824
>>>