Python 确定数据集中相邻点之间的平均欧氏距离

Python 确定数据集中相邻点之间的平均欧氏距离,python,algorithm,numpy,scipy,euclidean-distance,Python,Algorithm,Numpy,Scipy,Euclidean Distance,我想计算二维数据集(xCoords,yCoords)中的平均欧几里德距离,但仅计算相邻点之间的平均欧几里德距离 例如: xCoords = [[16.8742 10.7265 30.0538 10.4524 12.6483 15.5349 10.2094 28.6425 9.2882]] yCoords = [[14.5835 6.0766 12.7006 4.3638 5.0318 14.2657 8.3131 15.8346 6.1746]] 我想求点之间的欧几里德距离,但只求相

我想计算二维数据集(xCoords,yCoords)中的平均欧几里德距离,但仅计算相邻点之间的平均欧几里德距离

例如:

xCoords = [[16.8742 10.7265 30.0538 10.4524 12.6483 15.5349 10.2094 28.6425 9.2882]]

yCoords = [[14.5835  6.0766 12.7006  4.3638  5.0318 14.2657  8.3131 15.8346 6.1746]]
我想求点之间的欧几里德距离,但只求相邻点之间的欧几里德距离。我的任务是否有numpy、scipy或sklearn功能(或其他功能)

编辑:

举个例子:

我想要什么:

我不想要的:


我不想计算从每个数据点到所有其他数据点的欧几里德距离。

Sklearn具有欧几里德距离函数:

该函数返回一个矩阵,其中包含每对坐标之间的欧几里德距离,如果这不完全是您需要的,您可以使用希望获得这些“相邻距离”的规则过滤该矩阵


或者,您可能需要某种聚类算法(如k-means),它将在聚类中划分最近的点,然后获得每个聚类的平均距离。

Sklearn具有euclieden_距离函数:

该函数返回一个矩阵,其中包含每对坐标之间的欧几里德距离,如果这不完全是您需要的,您可以使用希望获得这些“相邻距离”的规则过滤该矩阵


或者你可能需要某种聚类算法(如k-means),它将最接近的点划分成簇,然后得到每个簇的平均距离。

相邻点之间的距离是什么意思?对不起,我编辑了我的帖子以使其更清晰。在你的第一张图片中,什么排除了将点包括在[0.9,0.45]中的可能性是否与[0.8,0.2]处的基点“相邻”?什么是明确的标准来表示点是/不是相邻的?这也是我努力想出来的。例如,如果我对等间距点的2D网格进行成像,则确定每个单独点的相邻点相对容易成像,也容易实现。然而,这个想法必须以某种方式推广到上面任意分布的示例中。相邻点彼此相邻是什么意思?对不起,我编辑了我的帖子以使其更清楚。在您的第一张图片中,有什么排除将[0.9,0.45]处的点包含为与[0.8,0.2]处的基点“相邻”的可能性?什么是明确的标准来表示点是/不是相邻的?这也是我努力想出来的。例如,如果我对等间距点的2D网格进行成像,则确定每个单独点的相邻点相对容易成像,也容易实现。然而,这个想法必须以某种方式推广到上面任意分布的示例中。如果您发现k-means可能会对您有所帮助,下面是如何获得距离最近群集的数据点的距离,非常感谢!我会看看能否根据你的建议提出一个解决方案,但这肯定是一个需要解决的问题。如果你想知道我所说的“相邻点”是什么意思,我试图在我的原始帖子的上面的回答中说清楚。PhilE,重点是,就我所能理解的而言,这些点没有一个“完全正确的规则”,你知道我的意思吗?所以我可以想出一个想法,你想要最接近的点之间的距离(k-meand就是这么做的),一个无监督的算法,试图找到最好的点组,然后有这些组,你可以得到有趣的距离,比如最近/远组的距离,组边界上的点之间的距离。。。希望这对你有帮助!是的,这很有帮助!非常感谢。如果您发现k-means可能会对您有所帮助,以下是如何获得距离最近群集的数据点的距离,非常感谢!我会看看能否根据你的建议提出一个解决方案,但这肯定是一个需要解决的问题。如果你想知道我所说的“相邻点”是什么意思,我试图在我的原始帖子的上面的回答中说清楚。PhilE,重点是,就我所能理解的而言,这些点没有一个“完全正确的规则”,你知道我的意思吗?所以我可以想出一个想法,你想要最接近的点之间的距离(k-meand就是这么做的),一个无监督的算法,试图找到最好的点组,然后有这些组,你可以得到有趣的距离,比如最近/远组的距离,组边界上的点之间的距离。。。希望这对你有帮助!是的,这很有帮助!非常感谢。
>>> from sklearn.metrics.pairwise import euclidean_distances
>>> X = [[0, 1], [1, 1]]
>>> # distance between rows of X
>>> euclidean_distances(X, X)
array([[0., 1.],
       [1., 0.]])
>>> # get distance to origin
>>> euclidean_distances(X, [[0, 0]])
array([[1.        ],
       [1.41421356]])