diags#
- scipy.sparse.diags(diagonals, offsets=0, shape=None, format=None, dtype=None)[source]#
- Construct a sparse matrix from diagonals. - Warning - This function returns a sparse matrix – not a sparse array. You are encouraged to use - diags_arrayto take advantage of the sparse array functionality.- Parameters:
- diagonalssequence of array_like
- Sequence of arrays containing the matrix diagonals, corresponding to offsets. 
- offsetssequence of int or an int, optional
- Diagonals to set (repeated offsets are not allowed):
- k = 0 the main diagonal (default) 
- k > 0 the kth upper diagonal 
- k < 0 the kth lower diagonal 
 
 
- shapetuple of int, optional
- Shape of the result. If omitted, a square matrix large enough to contain the diagonals is returned. 
- format{“dia”, “csr”, “csc”, “lil”, …}, optional
- Matrix format of the result. By default (format=None) an appropriate sparse matrix format is returned. This choice is subject to change. 
- dtypedtype, optional
- Data type of the matrix. 
 
- Returns:
- new_matrixdia_matrix
- dia_matrixholding the values in diagonals offset from the main diagonal as indicated in offsets.
 
 - See also - spdiags
- construct matrix from diagonals 
- diags_array
- construct sparse array instead of sparse matrix 
 - Notes - Repeated diagonal offsets are disallowed. - The result from - diagsis the sparse equivalent of:- np.diag(diagonals[0], offsets[0]) + ... + np.diag(diagonals[k], offsets[k]) - diagsdiffers from- dia_matrixin the way it handles off-diagonals. Specifically,- dia_matrixassumes the data input includes padding (ignored values) at the start/end of the rows for positive/negative offset, while- diagsassumes the input data has no padding. Each value in the input diagonals is used.- Added in version 0.11. - Examples - >>> 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 of scalars is supported (but shape needs to be specified): - >>> 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.]]) - If only one diagonal is wanted (as in - numpy.diag), the following works as well:- >>> diags([1, 2, 3], 1).toarray() array([[ 0., 1., 0., 0.], [ 0., 0., 2., 0.], [ 0., 0., 0., 3.], [ 0., 0., 0., 0.]])