Rate This Document
Findability
Accuracy
Completeness
Readability

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.

Table 1 Norms corresponding to values 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

  • If axis is None, x must be 1D or 2D, unless ord is None.
  • If both axis and ord are None, the 2-norm of x.ravel will be returned.

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

  • If axis is an integer, it specifies the axis of x along which to compute the vector norms.
  • If axis is a 2-tuple, it specifies the axes that hold 2D matrices, and the matrix norms of these matrices are computed.
  • If axis is None, then either a vector norm (when x is 1D) or a matrix norm (when x is 2D) is returned.

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