将numpy中的对角化扩展到2维以上
我有一个向量将numpy中的对角化扩展到2维以上,numpy,matrix,Numpy,Matrix,我有一个向量 >>> import numpy as np >>> v = np.array([1, 2, 3]) 在努比。我们使用np.diag从这个向量创建一个对角矩阵,得到以下结果 [[1, 0, 0], [0, 2, 0], [0, 0, 3]] 但是,如中所述,np.diag函数仅适用于一维和二维矩阵。 如果v的元素本身是nxmnp数组怎么办?如何方便快速地对那个数组进行对角化?来吧,重点是我们将有nxm大小的零矩阵,而不是0 这就是我想要的:
>>> import numpy as np
>>> v = np.array([1, 2, 3])
在努比。我们使用np.diag
从这个向量创建一个对角矩阵,得到以下结果
[[1, 0, 0],
[0, 2, 0],
[0, 0, 3]]
但是,如中所述,np.diag
函数仅适用于一维和二维矩阵。
如果v
的元素本身是nxm
np数组怎么办?如何方便快速地对那个数组进行对角化?来吧,重点是我们将有nxm
大小的零矩阵,而不是0
这就是我想要的:
Q = [Q1, Q2, Q3, Q4, Q5]
其中Q_i
是nxm
矩阵,即Q_i.shape=(n,m)
。因此,Q
的形状是(5,n,m)
。
现在我想要一个对角矩阵:
Q_diag =
[[Q1 0 0 0 0]
[0 Q2 0 0 0]
[0 0 Q3 0 0]
[0 0 0 Q4 0]
[0 0 0 0 Q5]]
而
0
实际上本身就是nxm
矩阵,也就是说,具有(n,m)
的形状。所以在所有的形状中,Q_diag都是Q_diag.shape=(5,5,n,m)。几分钟前你刚刚问过这个问题。好的,它被标记为重复,但是你应该在评论中提出你的对象,而不是重复同样的问题。你需要更清楚地解释你需要什么。准确地展示你的期望。如果我们不知道慢是什么,我们就不能帮助快速。我们想要对向量的元素进行对角化,元素本身就是numpy数组。np.diag不允许你这么做。是的,它不应该使用Python的for循环,因为这些循环效率很低,比我们提出的任何本机numpy实现慢300倍。我还在等待一个工作示例——即使它使用了那些可怕的循环。