是否有一种方法可以减少for循环的数量并使用numpy函数来减少代码完成的时间



传递带有参数arr(array), risk_matrix(方阵),risk_factor(float value)的函数

def infection(arr,risk_matrix,risk_factor):
arr=arr*risk_factor
tup=np.linalg.eig(arr)
evalue=tup[0]
evector=tup[1]
for i in range (len(arr)):
for j in range (i,len(arr)):
if i==j:
continue
risk_edge=0
for k in range (len(evalue)):
risk_edge=risk_edge+(math.exp(evalue[k])*evector[i][k]*evector[j][k])
risk_matrix[i][j]=risk_edge
risk_matrix[j][i]=risk_edge
return risk_matrix

value是nx1数组和NXN数组中的evector

采用数组广播,速度提高。如果有更好的方法请告诉我

def infection(arr,risk_matrix,risk_factor):
arr=arr*risk_factor
tup=np.linalg.eig(arr)
evalue=tup[0]
evector=tup[1]
for i in range (len(arr)):
for j in range (i+1,len(arr)):
risk_edge=(np.exp(evalue)*evector[i]*evector[j]).sum()
risk_matrix[i][j]=risk_edge
risk_matrix[j][i]=risk_edge
return risk_matrix

最新更新