python 求一个矩阵的距离矩阵的方法:

例:有行向量矩阵Matrix,维度为(n行,d特征长)。我们要求个点之间的距离并构成一个(n,n)距离矩阵,方法如下:

主要用到:

np.square(),

np.add(a,b), #若b为行向量,将b加到前面的每一行上;若b为列向量,将b加到前面的每一列上

np.sum(a,1) #1:按列加,0:按行加

我们有

(a - b)^2 = a^2 + b^2 - 2*a*b;

import numpy as np

def calculate_dis(x):
    sum_x = np.sum(np.square(x),1)#先求对应元素的平方,然后按列相加,得到(n,1)列向量
    
dist = np.add(np.add(-2*np.dot(x,x.T),sum_x),sum_x.T)#np.dot()函数是向量的点乘,np.add()函数是将sum_x的转置行向量依次加到前面的(n,n)向量的每一行上。按行加 
    或
    dist = np.add(np.add(-2*np.dot(x,x.T),sum_x).T,sum_x)#np.dot()函数是向量的点乘,np.add()函数是将sum_x列向量依次加到前面的(n,n)向量的每一列上。按列加
   
    return dist

举个例子:

发布了36 篇原创文章 · 获赞 4 · 访问量 8040

猜你喜欢

转载自blog.csdn.net/qq_41368074/article/details/105571476