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
ordeine 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.ravelzurü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 <= 0ist 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