Обычно вы используете scipy's cdist
для достижения этой цели, но вам нужно указать массивы в другом формате.
Пример:
import numpy as np
from scipy.spatial.distance import cdist
x = np.array([[2,1]])
y = np.array([[1,0], [2,3], [4,3]])
d = cdist(x,y)
И d
- массив со всеми расстояниями.
Как правило, при указании наборов точек формат p2 = [(x1, y1), (x2, y2), (x3, y3)...]
не очень удобен для манипуляций с такими библиотеками, как numpy / scipy / pandas.Обычно вместо этого вы можете предпочесть np.array([[x1,y1], [x2,y2], [x3,x3]])
.
Чтобы получить минимальное расстояние, используйте
idx = np.argmin(d)
idx
, которое возвращает значение index массива с минимальным расстоянием (в данном случае, 0
).
Так что если вы сделаете y[idx]
, он вернет точку с минимальным расстоянием (в данном случае [1, 0]
).