python – 如何获取csr矩阵的跟踪
发布时间:2020-12-20 12:10:40 所属栏目:Python 来源:网络整理
导读:我在 python和命令中使用networkx A = nx.adjacency_matrix(G) 返回csr矩阵,而不是2D数组.因此,当我尝试做的时候 np.trace(A) 我收到一个错误: Traceback (most recent call last): File "stdin",line 1,in module File "/usr/lib/python3/dist-packages/nu
我在
python和命令中使用networkx
A = nx.adjacency_matrix(G) 返回csr矩阵,而不是2D数组.因此,当我尝试做的时候 np.trace(A) 我收到一个错误: Traceback (most recent call last): File "<stdin>",line 1,in <module> File "/usr/lib/python3/dist-packages/numpy/core/fromnumeric.py",line 1279,in trace return asarray(a).trace(offset,axis1,axis2,dtype,out) ValueError: diag requires an array of at least two dimensions 我该如何绕过去追踪? 解决方法
不要使用矩阵. networkx有
nodes_with_selfloops 方法列出具有自循环的节点:
>>> import networkx >>> G = networkx.Graph() >>> G.add_node(1) >>> G.add_node(2) >>> G.add_node(3) >>> G.add_edge(2,2) >>> G.add_edge(1,3) >>> G.nodes_with_selfloops() [2] 如果图形未加权,则跟踪将只是列表中的项目数,因此您可以执行以下操作: >>> len(G.nodes_with_selfloops()) 1 如果它是加权的,你可以加总每个自循环的权重: >>> import networkx >>> G = networkx.Graph() >>> G.add_node(1) >>> G.add_node(2) >>> G.add_node(3) >>> G.add_edge(1,1,weight=2) >>> G.add_edge(2,2,weight=1.5) >>> sum(G.get_edge_data(node,node)['weight'] for node in G.nodes_with_selfloops()) 3.5 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |