python - 如何计算python中数组元素的距离?
问题描述
我有一个 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 函数)可以解决我的问题。我cdist
以前使用 from scipy.spatial.distance ,但它不再起作用(我对 scipy 依赖项有问题),所以我正在寻找另一种方式。
解决方案
这是一个纯粹的 numpy 解决方案。a
是您的输入向量数组。您首先明智地创建距离分量,然后将它们平方,然后将它们对每一行求和,然后得到每个总和的 sqrt。
np.sqrt(np.sum((a[1:] - a[:-1])**2, axis=1))
数组([1.41421356,1.73205081])
推荐阅读
- python - 不使用 Selenium 渲染整个页面
- python - Django runserver 命令失败
- php - 慢速连接 PHP PDO Postgres 但不是 MySQL
- reactjs - 在我进行更改而不是保存时对重新编译做出反应
- python - 如何水平堆叠 Keras 模型?
- python - Python 未检测到“on_member_join”
- android - 应用内更新的 JobCancellationException
- node.js - kubernetes 上的 Jenkins 动态从站 - 构建时间非常长
- xamarin.forms - Zxing Xamarin-forms 自动对焦
- r - R中基于小时的移动窗口的最小值