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

如何获取由NetworkX图(含Python DataFrame构建)生成的邻接矩阵标签?

我来帮你拆解这两个关于NetworkX邻接矩阵标签的问题,直接上实用的解法和代码示例:

问题1:获取由NetworkX图生成的邻接矩阵的标签

你得记住一个核心逻辑:NetworkX生成的邻接矩阵(不管是numpy数组还是scipy稀疏矩阵),行和列的顺序完全对应图中节点的遍历顺序。所以获取标签的关键就是拿到图的节点列表,这个列表的顺序和矩阵维度一一对应。

代码示例

import networkx as nx
import numpy as np

# 构建一个带自定义标签的示例图
G = nx.Graph()
G.add_nodes_from(["Alice", "Bob", "Charlie", "Dave"])
G.add_edges_from([("Alice", "Bob"), ("Bob", "Charlie"), ("Charlie", "Dave")])

# 生成numpy格式的邻接矩阵
adj_matrix = nx.to_numpy_array(G)
# 获取节点标签,顺序和矩阵行/列严格匹配
node_labels = list(G.nodes())

print("邻接矩阵:")
print(adj_matrix)
print("\n节点标签(对应矩阵行/列顺序):", node_labels)

更便捷的DataFrame邻接矩阵方式

如果你用nx.to_pandas_adjacency()生成DataFrame格式的邻接矩阵,那标签直接就能拿到——DataFrame的index和columns就是节点标签:

adj_df = nx.to_pandas_adjacency(G)
print("\nDataFrame邻接矩阵的标签:")
print(adj_df.index.tolist())  # 和adj_df.columns.tolist()结果完全一致

问题2:从Python DataFrame构建图后,获取邻接矩阵的标签

用DataFrame构建NetworkX图最常见的两种场景:边表格式的DataFrame,或者邻接表格式的DataFrame,两种场景下的标签获取逻辑其实和问题1是通的。

场景1:从边表DataFrame建图

边表一般包含source(起点)、target(终点)列,可能还有边权重这类属性,用nx.from_pandas_edgelist()建图后,标签依然是图的节点列表:

import pandas as pd
import networkx as nx

# 构造边表DataFrame
edge_df = pd.DataFrame({
    "source": ["X", "Y", "Y", "Z"],
    "target": ["Y", "Z", "X", "X"],
    "weight": [1, 2, 1, 3]
})

# 从边表构建带权重的图
G_from_df = nx.from_pandas_edgelist(
    edge_df,
    source="source",
    target="target",
    edge_attr="weight"
)

# 生成邻接矩阵并获取标签
adj_matrix_from_df = nx.to_numpy_array(G_from_df)
node_labels_from_df = list(G_from_df.nodes())

print("从边表构建的图的邻接矩阵:")
print(adj_matrix_from_df)
print("\n对应的节点标签:", node_labels_from_df)

场景2:从邻接表DataFrame建图

如果你的DataFrame本身就是邻接表格式(行和列都是节点,单元格是边权重),用nx.from_pandas_adjacency()建图后,标签就是原DataFrame的索引/列名:

# 邻接表格式的DataFrame
adj_table_df = pd.DataFrame({
    "X": [0, 1, 3],
    "Y": [1, 0, 2],
    "Z": [3, 2, 0]
}, index=["X", "Y", "Z"])

# 从邻接表建图
G_from_adj_df = nx.from_pandas_adjacency(adj_table_df)
# 标签直接复用原DataFrame的索引即可
labels = adj_table_df.index.tolist()
print("\n邻接矩阵标签:", labels)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:09:58