有没有办法减少循环的数量并使用Numpy功能来减少代码完成的时间
传递函数
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
使用参数ARR(数组),striz_matrix(square矩阵),strig_factor(float值)评估是NX1数组和evector,在NXN数组中
Passing a function with parameters arr(array), risk_matrix(square 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
evalue is nx1 array and evector in nxn array
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用的阵列广播,速度得到了提高。如果有更好的方法,请告诉我
used array broadcasting, speed is improved. if there is a even better method let me know