【发布时间】:2021-03-24 08:11:41
【问题描述】:
我正在尝试使用 networkx 从 numpy 数组创建图表,但出现此错误:networkx.exception.NetworkXError: ('Adjacency matrix is not square.', 'nx,ny=(10, 11)')
有人知道怎么解决吗?
My_Diz = {'X120213_1_0013_2_000004': array([[ 0. , 23.40378234, 30.29631001, 49.45217086,
53.47727757, 74.32949293, 73.27188558, 93.85556785,
132.31971186, 118.04532327, 88.1557181 ],
[ 0. , 0. , 34.41617904, 39.54024761,
34.25713329, 51.79037103, 51.33810652, 70.9900316 ,
109.76561471, 98.51724406, 69.76728919],
[ 0. , 0. , 0. , 26.66788605,
42.7133817 , 79.11779461, 65.88325262, 89.68664703,
125.91837789, 102.22926865, 71.58316322],
[ 0. , 0. , 0. , 0. ,
22.98401022, 65.5730092 , 44.53195174, 68.64071584,
102.34029705, 75.76571351, 45.22368742],
[ 0. , 0. , 0. , 0. ,
0. , 43.0377496 , 23.19245567, 47.19664886,
83.42653241, 65.0762151 , 35.66216118],
[ 0. , 0. , 0. , 0. ,
0. , 0. , 30.28626571, 29.1448064 ,
64.72235299, 72.76481721, 56.93798086],
[ 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 24.18622881,
60.591058 , 49.69530936, 27.61846738],
[ 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ,
39.02763348, 46.26701103, 40.06206332],
[ 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ,
0. , 44.72240673, 62.0541588 ],
[ 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ,
0. , 0. , 30.69921172]])}
for k,v in My_Diz.items():
G = nx.from_numpy_matrix(v)
nx.draw(G)
【问题讨论】:
-
邻接矩阵实际上是一个表,表示每个节点作为行索引,列索引中到每个节点的距离。因此,它需要是方形的。要么您的矩阵被压缩以跳过自身边缘,要么您必须找出格式让我们帮助您
-
@hl037_ 它不是真的,这不需要是正方形的,为了节省内存,您可以跳过放置最后一行,因为您已经拥有该元素与列中其他元素之间的所有距离跨度>
-
在这种情况下,它是三角形的,但你不能用数组做三角形(或者有 0...)此外,重复是使矩阵比列表更快的原因...跨度>
-
然后试着把它变成正方形
-
@hl037_ 如果您有时间,我还有一个问题要问您。我有一个表示图的字典,我怎样才能使它成为 python 中的邻接矩阵