scipy.linalg.

norm#

scipy.linalg.norm(a, ord=None, axis=None, keepdims=False, check_finite=True)[Quelle]#

Matrix- oder Vektornorm.

Diese Funktion kann je nach Wert des Parameters ord eine von acht verschiedenen Matrixnormen oder eine von unendlich vielen Vektorormen (siehe unten) zurückgeben. Für Tensoren mit Rang, der sich von 1 oder 2 unterscheidet, wird nur ord=None unterstützt.

Parameter:
aarray_like

Eingabearray. Wenn axis None ist, muss a eindimensional oder zweidimensional sein, es sei denn, ord ist None. Wenn sowohl axis als auch ord None sind, wird die 2-Norm von a.ravel zurückgegeben.

ord{int, inf, -inf, ‘fro’, ‘nuc’, None}, optional

Ordnung der Norm (siehe Tabelle unter Hinweise). inf bedeutet das inf-Objekt von NumPy.

axis{int, 2-Tupel von ints, None}, optional

Wenn axis eine Ganzzahl ist, gibt sie die Achse von a an, entlang der die Vektorormen berechnet werden sollen. Wenn axis ein 2-Tupel ist, gibt es die Achsen an, die 2D-Matrizen enthalten, und die Matrixnormen dieser Matrizen werden berechnet. Wenn axis None ist, wird entweder eine Vektororm (wenn a 1D ist) oder eine Matrixnorm (wenn a 2D ist) zurückgegeben.

keepdimsbool, optional

Wenn dies auf True gesetzt ist, bleiben die Achsen, über die die Norm berechnet wurde, als Dimensionen der Größe eins im Ergebnis erhalten. Mit dieser Option wird das Ergebnis korrekt mit dem ursprünglichen a ausgestrahlt.

check_finitebool, optional

Ob überprüft werden soll, ob die Eingabematrix nur endliche Zahlen enthält. Das Deaktivieren kann zu einer Leistungssteigerung führen, kann aber zu Problemen (Abstürze, Nichtterminierung) führen, wenn die Eingaben Unendlichkeiten oder NaNs enthalten.

Rückgabe:
nfloat oder ndarray

Norm der Matrix oder der Vektoren.

Hinweise

Für Werte von ord <= 0 ist das Ergebnis streng genommen keine mathematische „Norm“, kann aber dennoch für verschiedene numerische Zwecke nützlich sein.

Die folgenden Normen können berechnet werden

ord

Norm für Matrizen

Norm für Vektoren

None

Frobenius-Norm

2-Norm

‘fro’

Frobenius-Norm

‘nuc’

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

wie unten

-1

min(sum(abs(a), axis=0))

wie unten

2

2-Norm (größter singulärer Wert)

wie unten

-2

kleinster singulärer Wert

wie unten

andere

sum(abs(a)**ord)**(1./ord)

Die Frobenius-Norm ist gegeben durch [1]

\(||A||_F = [\sum_{i,j} abs(a_{i,j})^2]^{1/2}\)

Die Kern-Norm ist die Summe der singulären Werte.

Sowohl die Frobenius- als auch die Kern-Normen sind nur für Matrizen definiert.

Referenzen

[1]

G. H. Golub und C. F. Van Loan, Matrix Computations, Baltimore, MD, Johns Hopkins University Press, 1985, S. 15

Beispiele

>>> import numpy as np
>>> 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.0
>>> norm(b, np.inf)
9.0
>>> norm(a, -np.inf)
0.0
>>> norm(b, -np.inf)
2.0
>>> norm(a, 1)
20.0
>>> norm(b, 1)
7.0
>>> norm(a, -1)
-4.6566128774142013e-010
>>> norm(b, -1)
6.0
>>> norm(a, 2)
7.745966692414834
>>> norm(b, 2)
7.3484692283495345
>>> norm(a, -2)
0.0
>>> norm(b, -2)
1.8570331885190563e-016
>>> norm(a, 3)
5.8480354764257312
>>> norm(a, -3)
0.0