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