計算兩個點集合之間的最小距離的一些函式

2021-09-26 09:41:42 字數 3709 閱讀 1641

scipy.spatial.distance.cdist(xa, xb, metric=『euclidean』, p=none, v=none, vi=none, w=none),該函式用於計算兩個輸入集合的距離,通過metric引數指定計算距離的不同方式得到不同的距離度量值

metric的常見取值如下:

chebyshev:切比雪夫距離

correlation:相關係數

cosine:余弦夾角

euclidean:歐式距離

hamming:漢明距離

mahalanobis:馬氏距離

seuclidean:標準化歐式距離

常見的歐氏距離計算:

in [1]

: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').

..:out[1]

:array([[

4.47213595

,5.83095189

,7.81024968],

[3.16227766

,4.47213595

,6.40312424],

[2.23606798

,2.23606798

,3.16227766]]

)

解析上述計算過程:結果陣列中的第一行資料表示的是x1陣列中第乙個元素點與x2陣列中各個元素點的距離,計算兩點之間的距離

以點(1,3)與(3,7)點的距離為例:

in [2]

: np.power((1

-3)**

2+(3

-7)**

2,1/

2)out[2]

:4.4721359549995796

shape函式返回的是乙個元組,表示陣列(矩陣)的維度

對於乙個二維矩陣a, a.shape返回的元組表示該陣列的行數與列數,請看下例:

>>

> a=np.array([[

1,2]

,[3,

4]])

>>

> a

array([[

1,2]

,[3,

4]])

>>

> a.shape

(2l, 2l)

argsort函式返回的是陣列值從小到大的索引值

examples

# 一維陣列

>>

> x = np.array([3

,1,2

])>>

> np.argsort(x)

array([1

,2,0

])# 二維陣列

>>

> x = np.array([[

0,3]

,[2,

2]])

>>

> x

array([[

0,3]

,[2,

2]])

>>

> np.argsort(x, axis=0)

#按列排序

array([[

0,1]

,[1,

0]])

>>

> np.argsort(x, axis=1)

#按行排序

array([[

0,1]

,[0,

1]])

如果沒有引數min()返回乙個標量,如果有引數0表示沿著列,1表示沿著行

>>

> a=np.array([[

1,2]

,[3,

4]])

>>

> a.

min()1

>>

> a.

min(0)

array([1

,2])

>>

> a.

min(1)

array([1

,3])

numpy.argmin表示最小值在陣列中所在的位置索引

a = np.array([[

1,2]

,[3,

4]])

b = np.argmin(a)

結果:0

# 若有重複只顯示第乙個最小值的位置

a = np.array([[

0,0,

1],[

2,3,

4]])

b = np.argmin(a)

結果:0

若新增axis這個引數,則表示求在行或者列方向上的最小值索引

axis=0 表示列方向上的最小值索引,axis=1表示行方向的最小值索引

a =np.array([[

1,0,

3],[

2,3,

1]])

b = np.argmin(a, axis=0)

結果:[0,

0,1]

a = np.array([[

1,0,

3],[

2,3,

1]])

b = np.argmin(a, axis=1)

結果:[1,

2]

numpy.argmax(a, axis=none, out=none) :返回沿軸axis最大值的索引

parameters:

a : array_like :陣列

axis : int:(可選)預設情況下,索引的是平鋪的陣列,否則沿指定的軸。

out : array:(可選)如果提供,結果以合適的形狀和型別被插入到此陣列中。

a = np.array([[

1,2]

,[3,

4]])

b = np.argmax(a)

結果:3

# 若有重複只顯示第乙個最大值的位置

a = np.array([[

0,4,

1],[

2,3,

4]])

b = np.argmin(a)

結果:1

若新增axis這個引數,則表示求在行或者列方向上的最大值索引

axis=0 表示列方向上的最大值索引,axis=1表示行方向的最大值索引

a =np.array([[

1,0,

3],[

2,3,

1]])

b = np.argmax(a, axis=0)

結果:[1,

1,0]

a = np.array([[

1,0,

3],[

2,3,

1]])

b = np.argmin(a, axis=1)

結果:[2,

1]

計算蜂窩中兩個點之間的距離

如下圖所示,求兩個id之間的距離,如1到18的距離為2.方案是用極座標法,然後確定每個id的座標,再根據座標來計算距離。如下 ifndef honeycomb h define honeycomb h extern void init honeycomb int max id extern int ...

求兩個矩形之間的最小距離

正在參與的工程裡有乙個小功能是求兩個矩形之間的最小距離。大致翻了一下opencv,貌似沒看到現成的函式,那就自己寫乙個好了。1 不相交,但在x或y軸方向上有部分重合座標,比如矩形1和2,此時,最小距離為兩個矩形之間的最小平行距離或垂直距離,如圖中紅色箭線d12所示。2 不相交,在x和y軸方向上均無重...

sklearn計算兩個向量之間的距離

from sklearn.feature extraction.text import countvectorizer from sklearn.metrics.pairwise import euclidean distances from sklearn.feature extraction.t...