Я хочу вычислить и умножить последовательность вращения матрицы, используя numpy. Я написал этот код для своей работы,
def npmat(angle_list):
aa = np.full((nn, n, n),np.eye(n))
c=0
for j in range(1,n):
for i in range(j):
th = angle_list[c]
aa[c,i,i]=aa[c,j,j] = np.cos(th)
aa[c,i,j]= np.sin(th)
aa[c,j,i]= -np.sin(th)
c+=1
return np.linalg.multi_dot(aa)
n,nn=3,3
#nn=n*(n-1)/2
angle_list= array([1.06426904, 0.27106789, 0.56149785])
npmat(angle_list)=
array([[ 0.46742875, 0.6710055 , 0.57555363],
[-0.84250501, 0.53532228, 0.06012796],
[-0.26776049, -0.51301235, 0.81555052]])
Но я должен применять эту функцию более 10 тысяч раз, и это очень медленно, и я чувствую, что не использую numpy в полной мере. Есть ли более эффективный способ сделать это в numpy?