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

如何在Python中从随机图获取邻接矩阵?

获取NetworkX随机图的邻接矩阵方法

嘿,这问题很常见,NetworkX提供了好几种便捷的方式来获取随机图的邻接矩阵,我给你详细说说:

1. 最常用:Numpy数组形式的邻接矩阵

如果你需要一个稠密的矩阵(适合小型图,比如你例子里的10节点图),用nx.to_numpy_array()就非常合适,它直接返回一个Numpy数组,操作起来很方便。

示例代码:

import networkx as nx
import numpy as np

n = 10
p = 0.9
G = nx.generators.random_graphs.gnp_random_graph(n, p)
nx.draw(G)

# 获取邻接矩阵,指定dtype=int得到整数类型的矩阵
adj_matrix = nx.to_numpy_array(G, dtype=int)
print("生成的邻接矩阵:")
print(adj_matrix)

这里的矩阵是对称的(因为你生成的是无向图),adj_matrix[i][j]的值为1表示节点i和j之间有边,0表示没有边。

2. 稀疏矩阵形式(适合大型图)

如果你的图节点数量很多(比如上千个节点),稠密矩阵会占用大量内存,这时候推荐用nx.to_scipy_sparse_array()获取稀疏矩阵,它只存储有边的位置,能大幅节省空间。

示例代码:

# 获取稀疏邻接矩阵
sparse_adj = nx.to_scipy_sparse_array(G)
# 若要查看完整矩阵,可以转换为稠密形式打印
print("\n稀疏矩阵转稠密形式:")
print(sparse_adj.todense())

小提示:固定节点顺序

默认情况下,矩阵的行和列对应G.nodes()返回的节点顺序。如果需要固定顺序(比如按节点编号从小到大排序),可以传入nodelist参数:

# 按排序后的节点生成邻接矩阵
sorted_nodes = sorted(G.nodes())
adj_matrix_sorted = nx.to_numpy_array(G, nodelist=sorted_nodes)

注意:旧版本NetworkX里的nx.adjacency_matrix()现在已经被标记为废弃(deprecated),官方推荐使用上面两种方法哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 17:32:49