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...