我是python中的新用户...我知道这个问题非常原始,但我的项目有很多集合,我需要有效和快速的代码
我想生成一个if条件的矩阵。 例如: M =矩阵(m [i,j]如果条件1和条件2和......)
如何优化以下伪代码?
import networkx as nx
import numpy as np
#G=nx.graph()
#G.neighbors(node)
def seidel_matrix(G):
n=nx.number_of_nodes(G)
x=np.zeros((n,n))
for i in range(n):
for j in range(n):
if i==j:
x[i][j]=0
elif i in G.neighbors(j):
x[i][j]=-1
else:
x[i][j]=1
return x
答案 0 :(得分:0)
可能有多种方法可以做到这一点。现在,您正在遍历每个可能的边缘。如果有很多非边缘,这是一个糟糕的选择。绕过实际存在的每个边缘会更快。
x = np.ones((n,n)) #default entry is 1.
for u, v in G.edges(): #get edges right
x[u][v] = -1
x[v][u] = -1 #assuming undirected network
for u in G.nodes(): #get diagonal right.
x[u][u] = 0
请注意,这假设节点标记为0
,1
,...,n-1