取矩阵的非零元素的指标

  • 本文关键字:元素 python matrix
  • 更新时间 :
  • 英文 :


创建矩阵"代码如下:

n = int(input())
# Initialize matrix
adjacency_matrix = []

# For user input
for i in range(ROWS):       
a =[]
for j in range(COLUMNS):   
a.append(int(input()))
adjacency_matrix.append(a)

我想保存上面矩阵的非零元素的索引。

例如n = 3;

adjacency_matrix =
2 3 0
0 0 1
1 5 0

我想在"li_r":

中保存非零元素的行
li_r = [0 0 1 2 2]

并将非零元素的列保存在"li_c":

li_c = [0 1 2 0 1]

My goal is取(0,0)(0,1)(1,2)(2,0)(2,1)作为非零元素的行和列并将它们赋给g.a dedge (u,v)在我的代码中,我想让

g.addEdge(0,0)
g.addEdge(0,1)
g.addEdge(1,2)
g.addEdge(2,0)
g.addEdge(2,1)

我写了这段代码,但不工作:

for i in range(n):
li_r = [];
li_c = []
for j in range(n):
if adjacency_matrix[i][j]!=0:
li_r.append(i)
li_c.append(j)
for i in range(len(li_r)):
for j in range(len(li_c)):
g.addEdge(li_r[i], li_c[j])

我是Python新手,如果可能的话,帮助我重写我的代码。

试试这个列表推导式。它返回一个位置(x,y)列表,你可以遍历每个位置并将它们插入g.d addedge ()

adjacency_matrix =[[2,3,0],[0,0,1],[1,5,0]]
pos = [(count1, count2) for count1, lst in enumerate(adjacency_matrix) for count2, num in enumerate(lst)  if num != 0]

输出
[(0, 0), (0, 1), (1, 2), (2, 0), (2, 1)]

g.addEdge ()

for i in pos:
g.addEdge(*i)

相关内容

  • 没有找到相关文章

最新更新