scipy.sparse.

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

spdiags

Konstruiere Matrix aus Diagonalen

diags_array

Konstruiere dünnbesetztes Array anstelle einer dünnbesetzten Matrix

Hinweise

Wiederholte Diagonalen-Offsets sind nicht zulässig.

Das Ergebnis von diags ist das dünnbesetzte Äquivalent von

np.diag(diagonals[0], offsets[0])
+ ...
+ np.diag(diagonals[k], offsets[k])

diags unterscheidet sich von dia_matrix in der Art und Weise, wie es mit Nebendiagonalen umgeht. Insbesondere nimmt dia_matrix an, dass die Dateneingabe am Anfang/Ende der Zeilen für positive/negative Offsets eine Auffüllung (ignorierte Werte) enthält, während diags annimmt, 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.]])