有没有更快的方法来实现此循环功能?

时间:2019-11-26 18:21:29

标签: python loops

有什么办法可以使此功能更快?我正在尝试通过以下方式创建3 x 3 alpha_j矩阵:

enter image description here

我有,

def a_j(r, a, A):
    alph = np.array([[0,0,0],[0,0,0],[0,0,0]],complex)
    for i in range(3):
        for j in range(3):
            alph[i,j] = (r * a * A[i,j])
    return alph

2 个答案:

答案 0 :(得分:2)

您可以没有任何循环地完成它:

def a_j(r, a, A):
    alph = np.array([[0,0,0],[0,0,0],[0,0,0]],complex)
    alph= (r * a * A)
    return alph
r = 5
a = 10
A = np.array([[2,6,1],[0,4,9],[1,8,3]],complex)
ans  = a_j(r,a,A)
print(ans)

此代码的输出:

[[ 100.+0.j  300.+0.j   50.+0.j]                                                                                    
 [   0.+0.j  200.+0.j  450.+0.j]                                                                                    
 [  50.+0.j  400.+0.j  150.+0.j]] 

代码输出:

[[ 100.+0.j  300.+0.j   50.+0.j]                                                                                    
 [   0.+0.j  200.+0.j  450.+0.j]                                                                                    
 [  50.+0.j  400.+0.j  150.+0.j]] 

通知输出相同,意味着您无需任何for循环就可以做到

答案 1 :(得分:0)

您可以使用理解列表,如下所示:

def a_j(r, a, A):
    return np.array([[np.complex(r * a * A[i,j]) for j in range(3)] for i in range(3)])