scipy.sparse.

spdiags#

scipy.sparse.spdiags(data, diags, m=None, n=None, format=None)[source]#

Return a sparse matrix from diagonals.

Parameters:
dataarray_like

Matrix diagonals stored row-wise

diagssequence of int or an int

Diagonals to set:

  • k = 0 the main diagonal

  • k > 0 the kth upper diagonal

  • k < 0 the kth lower diagonal

m, nint, tuple, optional

Shape of the result. If n is None and m is a given tuple, the shape is this tuple. If omitted, the matrix is square and its shape is len(data[0]).

formatstr, optional

Format of the result. By default (format=None) an appropriate sparse matrix format is returned. This choice is subject to change.

.. warning::

This function returns a sparse matrix – not a sparse array. You are encouraged to use dia_array to take advantage of the sparse array functionality.

See also

diags_array

more convenient form of this function

diags

matrix version of diags_array

dia_matrix

the sparse DIAgonal format.

Notes

This function can be replaced by an equivalent call to dia_matrix as:

dia_matrix((data, diags), shape=(m, n)).asformat(format)

Examples

>>> import numpy as np
>>> from scipy.sparse import spdiags
>>> data = np.array([[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]])
>>> diags = np.array([0, -1, 2])
>>> spdiags(data, diags, 4, 4).toarray()
array([[1, 0, 3, 0],
       [1, 2, 0, 4],
       [0, 2, 3, 0],
       [0, 0, 3, 4]])