scipy.sparse.

diags_array#

scipy.sparse.diags_array(diagonals, /, *, offsets=0, shape=None, format=None, dtype=None)[Quelle]#

Konstruiert ein Sparse-Array aus Diagonalen.

Parameter:
diagonalsSequenz von array_like

Sequenz von Arrays, die die Array-Diagonalen enthalten, entsprechend offsets.

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 ein quadratisches Array zurückgegeben, das groß genug ist, um die Diagonalen zu enthalten.

format{“dia”, “csr”, “csc”, “lil”, …}, optional

Matrixformat des Ergebnisses. Standardmäßig (format=None) wird ein geeignetes Sparse-Array-Format zurückgegeben. Diese Wahl kann sich ändern.

dtypedtype, optional

Datentyp des Arrays.

Rückgabe:
new_arraydia_array

dia_array, das die Werte in diagonals hält, versetzt von der Hauptdiagonale, wie in offsets angegeben.

Siehe auch

dia_array

Konstruktor für das Sparse DIAgonal-Format.

Hinweise

Wiederholte Diagonalen-Offsets sind nicht zulässig.

Das Ergebnis von diags_array ist das Sparse-Äquivalent von

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

diags_array unterscheidet sich von dia_array in der Art und Weise, wie es Off-Diagonalen behandelt. Insbesondere geht dia_array davon aus, dass die Eingabedaten Padding (ignorierte Werte) am Anfang/Ende der Zeilen für positive/negative Offsets enthalten, während diags_array davon ausgeht, dass die Eingabedaten kein Padding haben. Jeder Wert in der Eingabe diagonals wird verwendet.

Hinzugefügt in Version 1.11.

Beispiele

>>> from scipy.sparse import diags_array
>>> diagonals = [[1, 2, 3, 4], [1, 2, 3], [1, 2]]
>>> diags_array(diagonals, offsets=[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_array([1, -2, 1], offsets=[-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_array([1, 2, 3], offsets=1).toarray()
array([[ 0.,  1.,  0.,  0.],
       [ 0.,  0.,  2.,  0.],
       [ 0.,  0.,  0.,  3.],
       [ 0.,  0.,  0.,  0.]])