从一个点到所有其他点的距离总和

jfr*_*ran 6 python numpy scipy euclidean-distance pdist

我有两个清单

available_points = [[2,3], [4,5], [1,2], [6,8], [5,9], [51,35]]

和

solution = [[3,5], [2,1]]

我想弹出一个点available_points,并追加它solution用于从该点欧氏距离在总和,所有点solution是最大的.

所以,我会得到这个

solution = [[3,5], [2,1], [51,35]]


我能够选择这样的最初的2个最远点,但不知道如何继续.

import numpy as np
from scipy.spatial.distance import pdist, squareform

available_points = np.array([[2,3], [4,5], [1,2], [6,8], [5,9], [51,35]])

D = squareform(pdist(available_points)
I_row, I_col = np.unravel_index(np.argmax(D), D.shape)
solution = available_points[[I_row, I_col]]
Run Code Online (Sandbox Code Playgroud)

这给了我

solution = array([[1, 2], [51, 35]])

Div*_*kar 2

您可以使用cdist-

In [1]: from scipy.spatial.distance import cdist

In [2]: max_pt=available_points[cdist(available_points, solution).sum(1).argmax()]

In [3]: np.vstack((solution, max_pt))
Out[3]: 
array([[ 3,  5],
       [ 2,  1],
       [51, 35]])
Run Code Online (Sandbox Code Playgroud)