當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python NetworkX to_scipy_sparse_matrix用法及代碼示例


本文簡要介紹 networkx.convert_matrix.to_scipy_sparse_matrix 的用法。

用法:

to_scipy_sparse_matrix(G, nodelist=None, dtype=None, weight='weight', format='csr')

將圖形鄰接矩陣作為SciPy 稀疏矩陣返回。

參數

G圖形

NetworkX 圖用於構造稀疏矩陣。

nodelist列表,可選

行和列根據 nodelist 中的節點進行排序。如果nodelist 為無,則排序由 G.nodes() 生成。

dtypeNumPy 數據類型,可選

用於初始化數組的有效 NumPy dtype。如果無,則使用 NumPy 默認值。

weight字符串或無可選(默認='weight')

保存用於邊權重的數值的邊屬性。如果 None 則所有邊權重為 1。

format{‘bsr’, ‘csr’, ‘csc’, ‘coo’, ‘lil’, ‘dia’, ‘dok’} 中的字符串

要返回的矩陣的類型(默認‘csr’)。對於某些算法,稀疏矩陣的不同實現可以表現更好。詳細信息請參見[1]。

返回

ASciPy 稀疏矩陣

圖鄰接矩陣。

注意

對於有向圖,矩陣條目 i,j 對應於從 i 到 j 的邊。

使用參數權重中保存的邊屬性填充矩陣條目。當一條邊沒有該屬性時,該條目的值為 1。

對於多條邊,矩陣值是邊權重的總和。

nodelist 不包含 G 中的每個節點時,鄰接矩陣由 G 的子圖構建,該子圖由 nodelist 中的節點誘導。

用於圖中自循環邊的約定是將對角矩陣條目值分配給邊的權重屬性(如果邊沒有權重屬性,則為數字 1)。如果需要將邊權重加倍的替代約定,則可以按如下方式修改生成的 Scipy 稀疏矩陣:

>>> G = nx.Graph([(1, 1)])
>>> A = nx.to_scipy_sparse_matrix(G)
>>> print(A.todense())
[[1]]
>>> A.setdiag(A.diagonal() * 2)
>>> print(A.todense())
[[2]]

參考

1

Scipy Dev. References, “Sparse Matrices”, https://docs.scipy.org/doc/scipy/reference/sparse.html

例子

>>> G = nx.MultiDiGraph()
>>> G.add_edge(0, 1, weight=2)
0
>>> G.add_edge(1, 0)
0
>>> G.add_edge(2, 2, weight=3)
0
>>> G.add_edge(2, 2)
1
>>> S = nx.to_scipy_sparse_matrix(G, nodelist=[0, 1, 2])
>>> print(S.todense())
[[0 2 0]
 [1 0 0]
 [0 0 4]]

相關用法


注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.convert_matrix.to_scipy_sparse_matrix。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。