Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中计算与数组元素的距离?_Python_Performance_Numpy - Fatal编程技术网

如何在python中计算与数组元素的距离?

如何在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))等等 但是,有很多元素(大约数千个),并且此操作会重复多次。所以我

我有一个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))
等等

但是,有很多元素(大约数千个),并且此操作会重复多次。所以我需要一种快速执行的方法


我想知道是否有一个库(或者更好的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配置的一个问题,大约一小时前我发表了一篇文章,但是我还没有找到一种方法使它工作——这应该解决/让你更接近-。对于外部来源-。