簡體   English   中英

取矩陣的非零元素的索引

[英]Take indices of non zero elements of matrix

我使用以下代碼創建矩陣“adjacency_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]

我的目標是將 (0,0) (0,1) (1,2) (2,0) (2,1) 作為非零元素的行和列,並將它們提供給g.addEdge(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.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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM