numpy-ndarray行的纯python成对欧氏距离

numpy-ndarray行的纯python成对欧氏距离,numpy,matrix,euclidean-distance,theano,Numpy,Matrix,Euclidean Distance,Theano,我有一个大小矩阵(n_类,n_特征),我想计算每对类的成对欧几里德距离,这样输出将是一个(n_类,n_类)矩阵,其中每个单元都有欧几里德距离(class_I,class_j)的值 我知道有这个scipy空间距离()和sklearn.metric.euclidean距离(),但我想在Theano软件中使用它,所以我需要一个纯数学公式,而不是计算结果的函数 例如,我需要一系列的变换,比如a=X*B,D=X.T-X,results=D.T一些只包含矩阵数学运算而不是函数的东西。您可以使用numpy广播

我有一个大小矩阵(n_类,n_特征),我想计算每对类的成对欧几里德距离,这样输出将是一个(n_类,n_类)矩阵,其中每个单元都有欧几里德距离(class_I,class_j)的值

我知道有这个scipy空间距离()和sklearn.metric.euclidean距离(),但我想在Theano软件中使用它,所以我需要一个纯数学公式,而不是计算结果的函数


例如,我需要一系列的变换,比如a=X*B,D=X.T-X,results=D.T一些只包含矩阵数学运算而不是函数的东西。

您可以使用numpy广播来实现这一点,如中所示。将其转换为Theano代码应该很简单,或者只是参考上面@Eikenberg的评论,因为他是向我展示如何实现这一点的人

可能是重复的?是的,谢谢,它是重复的。我还发现了做同样事情的。谢谢Kyle.+1:)-如果我读对了你的要点,在
np.exp(-x1[np.newaxis,:,:]-x2[:,np.newaxis,:])[:,:,0]**2)中,你似乎只收集了第一个坐标上的距离。你不想要
np.exp(-(x1[np.newaxis,:,:]-x2[:,np.newaxis,:])**2.sum(2)).t
?是的。。。那看起来像个虫子。所有功能都很重要:)