有没有办法减少循环的数量并使用Numpy功能来减少代码完成的时间

发布于 2025-01-24 15:48:51 字数 624 浏览 0 评论 0原文

传递函数

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陌路终见情 2025-01-31 15:48:51

使用的阵列广播,速度得到了提高。如果有更好的方法,请告诉我

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

used array broadcasting, speed is improved. if there is a even better method let me know

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文