You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3.6+NetworkX2.1:bipartite.biadjacency_matrix节点名称恢复咨询

解决二分图邻接矩阵转DataFrame丢失节点名称的问题

这问题我之前也碰到过!其实解决起来很简单——关键是利用你传给biadjacency_matrix的nodes1和nodes2节点列表,直接给生成的DataFrame指定行和列的索引就行,因为矩阵的行/列顺序和你传入的节点列表顺序是完全对应的。

具体步骤和修改后的代码:

  1. 确认节点顺序一致性:调用bipartite.biadjacency_matrix(G, nodes1, nodes2)时,生成的矩阵行对应nodes1里的节点,列对应nodes2里的节点,顺序和列表完全匹配。
  2. 创建DataFrame时指定索引:在转换为DataFrame的同时,把nodes1设为行索引,nodes2设为列索引,这样就保留了原始节点名称,替代默认的数字索引。

修改后的代码如下:

import pandas as pd
from networkx import bipartite

# 假设你已经通过二分图获取或定义了nodes1和nodes2节点列表
A = bipartite.biadjacency_matrix(G, nodes1, nodes2).todense()
# 关键:指定index和columns参数
A_df = pd.DataFrame(A, index=nodes1, columns=nodes2)

额外提示:

如果你的nodes1和nodes2是通过bipartite.sets(G)获取的,注意集合是无序的,建议转换成列表并排序来固定顺序,避免后续索引错位:

# 获取二分图两边节点并固定顺序
nodes1, nodes2 = bipartite.sets(G)
nodes1 = sorted(nodes1)
nodes2 = sorted(nodes2)

这样处理后,你的DataFrame就会清晰显示节点名称,后续计算相关系数(比如A_df.corr())得到的相似度矩阵,行和列也会保留对应的节点名称,之后构建网络时直接用这些索引就能准确对应到原始节点啦。

内容的提问来源于stack exchange,提问作者sato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:21:48