计算 python 中所有点到给定点的加权距离

Calculate weighted distance from all points to a given point in python

我正在尝试计算从一组点到给定点的加权距离。加权距离函数如下所示。

点集(代码中的 X)如下所示

[[-14.78816795   1.        ]
 [-13.39187241   1.        ]
 [ -6.58691072   1.        ]
 ...
 [ -3.45446849  99.        ]
 [ 30.75222397  99.        ]
 [ 32.22760391  99.        ]]

我给定的点(代码中的质心)如下所示

array([[ -0.75675046, -28.46644783,   0.76348782],
       [ 80.        ,  74.        ,  83.        ]])

对于未加权的欧几里德距离,我知道我可以使用以下代码

k=3
for k in range(K):
       tempDist=np.sum((X-Centroids[:,k])**2,axis=1)
       EuclidianDistance=np.c_[EuclidianDistance,tempDist]

但我不太确定如何将权重应用于 x 和 y 分量。

首先,我认为您在未加权的欧几里得距离方面存在一些错误。 好像缺平方根,K也没有定义。

我已经加入了权重,同时尽量忠实于您已有的代码。

greek_lambda=0.2
W=np.array([[greek_lambda,0],[0,1-greek_lambda]])

for k in range(3):
   tempDist=np.sqrt(np.sum(np.dot((X-Centroids[:,k]),W)**2,axis=1))
   EuclidianDistance=np.c_[EuclidianDistance,tempDist]
print(EuclidianDistance)