networkx.linalg.attrmatrix.attr_sparse_matrix
的用法。用法:
attr_sparse_matrix(G, edge_attr=None, node_attr=None, normalized=False, rc_order=None, dtype=None)
使用 G 中的属性返回 SciPy 稀疏矩阵。
如果只传入
G
,则构造邻接矩阵。令 A 为节点属性
node_attr
的一组离散值。那么 A 的元素代表构造矩阵的行和列。现在,遍历G
中的每条边 e=(u,v) 并考虑边属性edge_attr
的值。如果 ua 和 va 分别是 u 和 v 的节点属性node_attr
的值,则将边属性的值添加到 (ua, va) 处的矩阵元素。- G:图形
NetworkX 图用于构造NumPy 矩阵。
- edge_attr:str,可选
矩阵的每个元素表示其节点属性对应于 matirx 的行/列的边的指定边属性的运行总计。该属性必须存在于图中的所有边上。如果没有指定属性,那么我们只计算节点属性对应于矩阵元素的边数。
- node_attr:str,可选
矩阵中的每一行和每一列都代表节点属性的一个特定值。该属性必须存在于图中的所有节点。注意,这个属性的值应该是可靠的哈希值。因此,不建议使用浮点值。如果未指定属性,则行和列将是图的节点。
- normalized:布尔型,可选
如果为 True,则每行都通过其值的总和进行归一化。
- rc_order:列表,可选
节点属性值的列表。此列表指定数组的行和列的顺序。如果没有提供排序,那么排序将是随机的(也是一个返回值)。
- M:SciPy 稀疏矩阵
属性矩阵。
- ordering:列表
如果指定了
rc_order
,则只返回矩阵。但是,如果rc_order
为 None,则也返回用于构造矩阵的排序。
- dtype:NumPy 数据类型,可选
用于初始化数组的有效 NumPy dtype。请记住,如果要对数组进行规范化,某些 dtype 可能会产生意想不到的结果。参数传递给 numpy.zeros()。如果未指定,则使用 NumPy 默认值。
参数:
返回:
其他参数:
例子:
构造一个邻接矩阵:
>>> G = nx.Graph() >>> G.add_edge(0, 1, thickness=1, weight=3) >>> G.add_edge(0, 2, thickness=2) >>> G.add_edge(1, 2, thickness=3) >>> M = nx.attr_sparse_matrix(G, rc_order=[0, 1, 2]) >>> M.toarray() array([[0., 1., 1.], [1., 0., 1.], [1., 1., 0.]])
或者,我们可以获得说明边厚度的矩阵。
>>> M = nx.attr_sparse_matrix(G, edge_attr="thickness", rc_order=[0, 1, 2]) >>> M.toarray() array([[0., 1., 2.], [1., 0., 3.], [2., 3., 0.]])
我们还可以为节点着色并询问所有边 (u,v) 上的概率分布,说明:
Pr(v 有颜色 Y | u 有颜色 X)
>>> G.nodes[0]["color"] = "red" >>> G.nodes[1]["color"] = "red" >>> G.nodes[2]["color"] = "blue" >>> rc = ["red", "blue"] >>> M = nx.attr_sparse_matrix(G, node_attr="color", normalized=True, rc_order=rc) >>> M.toarray() array([[0.33333333, 0.66666667], [1. , 0. ]])
例如,上面告诉我们对于所有边 (u,v):
Pr( v 是红色 | u 是红色) = 1/3 Pr( v 是蓝色 | u 是红色) = 2/3
Pr( v 是红色 | u 是蓝色) = 1 Pr( v 是蓝色 | u 是蓝色) = 0
最后,我们可以获得节点颜色列出的总权重。
>>> M = nx.attr_sparse_matrix(G, edge_attr="weight", node_attr="color", rc_order=rc) >>> M.toarray() array([[3., 2.], [2., 0.]])
因此,所有边 (u,v) 上的总权重,其中 u 和 v 具有颜色:
(red, red) is 3 # 唯一的贡献来自边 (0,1) (red, blue) is 2 # 来自边 (0,2) 和 (1,2) 的贡献 (blue, red) is 2 # 相同as (red, blue) since graph is undirected (blue, blue) is 0 # 没有带有蓝色端点的边
相关用法
- Python NetworkX attr_matrix用法及代码示例
- Python NetworkX attribute_mixing_dict用法及代码示例
- Python NetworkX attribute_mixing_matrix用法及代码示例
- Python NetworkX attribute_assortativity_coefficient用法及代码示例
- Python NetworkX average_degree_connectivity用法及代码示例
- Python NetworkX all_simple_paths用法及代码示例
- Python NetworkX add_star用法及代码示例
- Python NetworkX add_path用法及代码示例
- Python NetworkX all_pairs_dijkstra_path用法及代码示例
- Python NetworkX average_clustering用法及代码示例
- Python NetworkX arbitrary_element用法及代码示例
- Python NetworkX average_neighbor_degree用法及代码示例
- Python NetworkX all_pairs_shortest_path用法及代码示例
- Python NetworkX all_node_cuts用法及代码示例
- Python NetworkX articulation_points用法及代码示例
- Python NetworkX asadpour_atsp用法及代码示例
- Python NetworkX all_shortest_paths用法及代码示例
- Python NetworkX all_simple_edge_paths用法及代码示例
- Python NetworkX adjacency_graph用法及代码示例
- Python NetworkX astar_path用法及代码示例
- Python NetworkX all_pairs_bellman_ford_path用法及代码示例
- Python NetworkX ancestors用法及代码示例
- Python NetworkX average_shortest_path_length用法及代码示例
- Python NetworkX all_topological_sorts用法及代码示例
- Python NetworkX all_pairs_dijkstra用法及代码示例
注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.linalg.attrmatrix.attr_sparse_matrix。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。