diags#
- scipy.sparse.diags(diagonals, offsets=0, shape=None, format=None, dtype=None)[Quelle]#
Konstruiere eine dünnbesetzte Matrix aus Diagonalen.
Warnung
Diese Funktion gibt eine dünnbesetzte Matrix zurück – keine dünnbesetzte Array. Es wird empfohlen,
diags_arrayzu verwenden, um die Funktionalität dünnbesetzter Arrays zu nutzen.- Parameter:
- diagonalsSequenz von array_like
Sequenz von Arrays, die die Matrixdiagonalen enthalten und offsets entsprechen.
- offsetsSequenz von int oder ein int, optional
- Zu setzende Diagonalen (wiederholte Offsets sind nicht erlaubt)
k = 0 die Hauptdiagonale (Standard)
k > 0 die k-te obere Diagonale
k < 0 die k-te untere Diagonale
- shapeTupel von int, optional
Form des Ergebnisses. Wenn weggelassen, wird eine quadratische Matrix zurückgegeben, die groß genug ist, um die Diagonalen zu enthalten.
- format{“dia”, “csr”, “csc”, “lil”, …}, optional
Matrixformat des Ergebnisses. Standardmäßig (format=None) wird ein geeignetes dünnbesetztes Matrixformat zurückgegeben. Diese Wahl kann sich ändern.
- dtypedtype, optional
Datentyp der Matrix.
- Rückgabe:
- new_matrixdia_matrix
dia_matrix, die die Werte in diagonals hält, versetzt von der Hauptdiagonale wie in offsets angegeben.
Siehe auch
spdiagsKonstruiere Matrix aus Diagonalen
diags_arrayKonstruiere dünnbesetztes Array anstelle einer dünnbesetzten Matrix
Hinweise
Wiederholte Diagonalen-Offsets sind nicht zulässig.
Das Ergebnis von
diagsist das dünnbesetzte Äquivalent vonnp.diag(diagonals[0], offsets[0]) + ... + np.diag(diagonals[k], offsets[k])
diagsunterscheidet sich vondia_matrixin der Art und Weise, wie es mit Nebendiagonalen umgeht. Insbesondere nimmtdia_matrixan, dass die Dateneingabe am Anfang/Ende der Zeilen für positive/negative Offsets eine Auffüllung (ignorierte Werte) enthält, währenddiagsannimmt, dass die Eingabedaten keine Auffüllung haben. Jeder Wert in den Eingabe-diagonals wird verwendet.Hinzugefügt in Version 0.11.
Beispiele
>>> from scipy.sparse import diags >>> diagonals = [[1, 2, 3, 4], [1, 2, 3], [1, 2]] >>> diags(diagonals, [0, -1, 2]).toarray() array([[1., 0., 1., 0.], [1., 2., 0., 2.], [0., 2., 3., 0.], [0., 0., 3., 4.]])
Broadcasting von Skalaren wird unterstützt (aber die Form muss angegeben werden)
>>> diags([1, -2, 1], [-1, 0, 1], shape=(4, 4)).toarray() array([[-2., 1., 0., 0.], [ 1., -2., 1., 0.], [ 0., 1., -2., 1.], [ 0., 0., 1., -2.]])
Wenn nur eine Diagonale gewünscht wird (wie in
numpy.diag), funktioniert auch Folgendes:>>> diags([1, 2, 3], 1).toarray() array([[ 0., 1., 0., 0.], [ 0., 0., 2., 0.], [ 0., 0., 0., 3.], [ 0., 0., 0., 0.]])