scipy.sparse.

diags#

scipy.sparse.diags(diagonals, offsets=0, shape=None, format=None, dtype=None)[原始碼]#

從對角線建構稀疏矩陣。

警告

此函數回傳稀疏矩陣 – 而非稀疏陣列。 建議您使用 diags_array 以利用稀疏陣列功能。

參數:
diagonalsarray_like 序列

包含矩陣對角線的陣列序列,對應於 offsets

offsetsint 或 int 序列,選填
要設定的對角線 (不允許重複的偏移量)
  • k = 0 主對角線 (預設)

  • k > 0 第 k 個上對角線

  • k < 0 第 k 個下對角線

shapeint tuple,選填

結果的形狀。 若省略,則回傳一個足以包含對角線的方形矩陣。

format{“dia”, “csr”, “csc”, “lil”, …},選填

結果的矩陣格式。 預設情況下 (format=None) 會回傳適當的稀疏矩陣格式。 此選擇可能會變更。

dtypedtype,選填

矩陣的資料型別。

另請參閱

spdiags

從對角線建構矩陣

diags_array

建構稀疏陣列而非稀疏矩陣

註記

不允許重複的對角線偏移量。

來自 diags 的結果與下列項目相等:

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

diagsdia_matrix 在處理非對角線的方式上有所不同。 具體而言,dia_matrix 假設資料輸入包含正/負偏移量的列開頭/結尾的填充 (忽略的值),而 diags 假設輸入資料沒有填充。 輸入 diagonals 中的每個值都會被使用。

在 0.11 版本中新增。

範例

>>> 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.]])

支援純量廣播 (但需要指定形狀)

>>> 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.]])

如果只需要一個對角線 (如 numpy.diag 中),則以下方法也適用

>>> diags([1, 2, 3], 1).toarray()
array([[ 0.,  1.,  0.,  0.],
       [ 0.,  0.,  2.,  0.],
       [ 0.,  0.,  0.,  3.],
       [ 0.,  0.,  0.,  0.]])