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_arrayKonstruktor für das Sparse DIAgonal-Format.
Hinweise
Wiederholte Diagonalen-Offsets sind nicht zulässig.
Das Ergebnis von
diags_arrayist das Sparse-Äquivalent vonnp.diag(diagonals[0], offsets[0]) + ... + np.diag(diagonals[k], offsets[k])
diags_arrayunterscheidet sich vondia_arrayin der Art und Weise, wie es Off-Diagonalen behandelt. Insbesondere gehtdia_arraydavon aus, dass die Eingabedaten Padding (ignorierte Werte) am Anfang/Ende der Zeilen für positive/negative Offsets enthalten, währenddiags_arraydavon 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.]])