用于计算两组2d点之间的成对距离的Python替代方案

use*_*1_1 5 python algorithm numpy matrix euclidean-distance

在Matlab中存在pdist2命令.给定矩阵mx2和矩阵nx2,每行矩阵代表一个2d点.现在我想建立一个mxn矩阵,使得(i,j)元素表示从距离i理论值的点mx2矩阵jTH的点nx2矩阵.我只是调用命令pdist2(M,N).

我在python中寻找替代方案.我当然可以写2 for循环,但由于我使用2个numpy数组,使用for循环并不总是最好的选择.在python宇宙中是否有针对此的优化命令?基本上我要求python替代MATLAB pdist2.

Dun*_* WP 9

你正在寻找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)
Run Code Online (Sandbox Code Playgroud)
[[  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.        ]]
Run Code Online (Sandbox Code Playgroud)