矩阵的Froebenius距离矩阵

时间:2019-04-13 13:59:03

标签: python numpy matrix

我有两组矩阵Sigma和Sigma_barre(大小:KxDxD),我尝试计算这两组之间的Frobenius距离(矩阵上为2范数)矩阵,即矩阵M(大小KxK)这样

M [i,j] = Sigma [i]和Sigma_barre [j]之间的距离

我使用了np.linalg.norm,但是我不确定它能满足我的要求。这是我的天真代码:

M = np.zeros((K,K))
for i in range(K):
    for j in range(K):
        M[i,j] = np.linalg.norm(sigma[i]-sigma_barre[j]) 

所以我的问题是:您知道一种优雅而有效的方法来计算此矩阵吗?

1 个答案:

答案 0 :(得分:1)

您可以通过添加一些虚拟尺寸并指定求和的轴来一次性完成此操作。

M = np.linalg.norm(sigma[:,None] - sigma_barre[None,:], axis=(2,3))

由于sigma[:,None] - sigma_barre[None,:]是一个KxKxDxD大小的矩阵,因此这可能会占用大量内存,具体取决于K和D的大小。如果存在内存问题,尽管您可以从j开始循环i+1,因为您知道M[i,j] == M[j,i]M[i,i] == 0,但是您的解决方案似乎不错。