to_scipy_sparse_array#

to_scipy_sparse_array(G, nodelist=None, dtype=None, weight='weight', format='csr')[source]#

返回图的邻接矩阵作为SciPy稀疏数组。

Parameters:
G

用于构造稀疏矩阵的NetworkX图。

nodelist列表, 可选

行和列根据 nodelist 中的节点顺序排列。 如果 nodelist 为None,则顺序由G.nodes()生成。

dtypeNumPy数据类型, 可选

用于初始化数组的有效NumPy dtype。如果为None,则使用NumPy默认值。

weight字符串或None, 可选 (默认=’weight’)

用于边权重的数值的边属性。如果为None,则所有边权重为1。

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

返回矩阵的类型(默认’csr’)。对于某些算法,不同实现的稀疏矩阵性能可能更好。详见[1]。

Returns:
ASciPy稀疏数组

图的邻接矩阵。

Notes

对于有向图,矩阵项i,j对应于从i到j的边。

矩阵项使用参数weight中保存的边属性填充。当边没有该属性时,项的值为1。

对于多条边,矩阵值是边权重的总和。

nodelist 不包含 G 中的每个节点时,邻接矩阵是根据 nodelist 中的节点诱导的 G 的子图构建的。

图中自环边的约定是将矩阵对角项的值赋给边的权重属性(如果没有权重属性,则为1)。如果希望采用边权重加倍的替代约定,可以通过以下方式修改生成的SciPy稀疏数组:

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

References

[1]

Scipy开发参考, “稀疏矩阵”, https://docs.scipy.org/doc/scipy/reference/sparse.html

Examples

>>> 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_array(G, nodelist=[0, 1, 2])
>>> print(S.toarray())
[[0 2 0]
 [1 0 0]
 [0 0 4]]