Python替代方案,用于计算两组2d点之间的成对距离[重复]
问题内容:
这个问题已经在这里有了答案 :
N点与参考之间的有效距离计算 (以numpy /
scipy为单位)
(6个答案)
两个不同的Numpy数组中的点之间的最小欧几里得距离,不在
(6个答案)之内
3年前关闭。
在Matlab中,存在pdist2
命令。给定矩阵mx2
和矩阵nx2
,矩阵的每一行代表一个2d
点。现在,我想创建一个mxn
矩阵,使(i,j)
元素代表从矩阵的第一个点到矩阵的i
第一个点的距离。我只是简单地调用命令。mx2``j``nx2``pdist2(M,N)
我在python中寻找替代方法。我当然可以编写2个for循环,但是由于我正在使用2个numpy数组,因此使用for循环并非总是最佳选择。在python
Universe中是否有针对此的优化命令?基本上,我要用Python代替MATLAB的pdist2
。
问题答案:
您正在寻找cdist
scipy函数。它将计算两组n维矩阵之间的成对距离(默认为欧式)。
from scipy.spatial.distance import cdist
import numpy as np
X = np.arange(10).reshape(-1,2)
Y = np.arange(10).reshape(-1,2)
cdist(X, Y)
[[ 0. 2.82842712 5.65685425 8.48528137 11.3137085 ] [ 2.82842712 0. 2.82842712 5.65685425 8.48528137] [ 5.65685425 2.82842712 0. 2.82842712 5.65685425] [ 8.48528137 5.65685425 2.82842712 0. 2.82842712] [ 11.3137085 8.48528137 5.65685425 2.82842712 0. ]]