如何在python中计算与数组元素的距离?
我有一个numpy数组,其中每个元素都是一个位置,如下所示:如何在python中计算与数组元素的距离?,python,performance,numpy,Python,Performance,Numpy,我有一个numpy数组,其中每个元素都是一个位置,如下所示: array([[1, 1, 0. ], [2 , 2, 0. ], [3 , 3, 1 ]]) 我想计算每个元素之间的距离。因此,这里的预期输出是: [0, 1.414213, 1.732050] 距离的计算如下所示: 对于第一个元素,它是0,因为之前没有任何元素。第二种是sqrt((2-1)**2+(2-1)**2+(0-0)**2))等等 但是,有很多元素(大约数千个),并且此操作会重复多次。所以我
array([[1, 1, 0. ],
[2 , 2, 0. ],
[3 , 3, 1 ]])
我想计算每个元素之间的距离。因此,这里的预期输出是:
[0, 1.414213, 1.732050]
距离的计算如下所示:
对于第一个元素,它是0,因为之前没有任何元素。第二种是
sqrt((2-1)**2+(2-1)**2+(0-0)**2))
等等
但是,有很多元素(大约数千个),并且此操作会重复多次。所以我需要一种快速执行的方法
我想知道是否有一个库(或者更好的numpy函数)可以解决我的问题。我以前使用过scipy.spatial.distance中的
cdist
,但它已经不起作用了(我对scipy依赖项有问题),所以我正在寻找另一种方法。这里有一个纯numpy解决方案a
是您的输入向量数组。首先按组件创建距离,然后将其平方,然后对每行进行求和,然后获得每行和的sqrt
np.sqrt(np.sum((a[1:] - a[:-1])**2, axis=1))
阵列([1.41421356,1.73205081])
你是如何得出结果的?查看Scipy的pdist。对于第一个元素,它是0,因为之前没有任何元素。第二个是
sqrt((2-1)**2+(2-1)**2+(0-0)**2))
,所以我不能像我说的那样使用scipy.spatial。这是关于我的python配置的一个问题,大约一小时前我发表了一篇文章,但是我还没有找到一种方法使它工作——这应该解决/让你更接近-。对于外部来源-。