scipy.spatial.distance.cdist函数
scipy.spatial.distance.cdist(XA, XB, metric=‘euclidean’, p=None, V=None, VI=None, w=None)
该函数计算两个输入集合中每一对之间的距离。
通过metric参数指定计算距离的不同方式得到不同的距离度量值。
- braycurtis----------Bray-Curtis 距离
- canberra---------- 堪培拉距离
- chebyshev----------切比雪夫距离
- cityblock----------曼哈顿距离
- correlation----------相关距离
- cosine----------余弦距离
- dice----------布尔向量之间的骰子距离
- euclidean----------欧几里得距离(欧氏距离)
- hamming----------归一化汉明距离
- jaccard----------杰卡德相似系数
- kulsinski----------布尔向量之间的 Kulsinski 距离
- mahalanobis----------马氏距离
- matching---------- 同汉明距离
- minkowski----------闵可夫斯基距离(明氏距离)
- rogerstanimoto----------布尔向量之间的 Rogers-Tanimoto 距离
- russellrao----------布尔向量之间的 Russell-Rao 距离
- seuclidean----------标准欧几里得距离
- sokalmichener----------布尔向量之间的索卡尔-米切纳距离
- sokalsneath----------矢量之间的 Sokal-Sneath 距离
- sqeuclidean----------平方欧几里得距离
- wminkowski----------向量之间的加权明氏距离
- yule----------布尔向量之间的圣诞距离?
示例
from scipy.spatial.distance import cdist
import numpy as np
x1 =np.array([(1,3),(2,4),(5,6)])
x2 =[(3,7),(4,8),(6,9)]
cdist(x1,x2,metric='euclidean')
# --------------------------------------------------------
array([[ 4.47213595, 5.83095189, 7.81024968],
[ 3.16227766, 4.47213595, 6.40312424],
[ 2.23606798, 2.23606798, 3.16227766]])
计算两点之间的距离以点(1,3)与(3,7)点的距离为例:
np.power((1-3)**2 +(3-7)**2,1/2)
----------------------------
4.4721359549995796