当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。