【问题标题】:How to compute distance from elements of an array in python?如何计算python中数组元素的距离?
【发布时间】:2019-08-19 09:59:55
【问题描述】:

我有一个 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 依赖项有问题),所以我正在寻找另一种方法。

【问题讨论】:

  • 你是如何得到输出的?查看 Scipy 的 pdist。
  • 对于第一个元素,它是 0,因为之前没有任何元素。第二个是sqrt((2 - 1)**2 + (2 - 1)**2 + (0 - 0)**2)) 等等
  • 我不能像我说的那样使用 scipy.spatial。这是我的python配置的问题,一个小时前我已经发了一个帖子,但我还没有找到让它工作的方法
  • 这应该可以解决/让您更接近 - stackoverflow.com/questions/52030458。对于分机。来源 - scikit-learn.org/stable/modules/generated/….

标签: python performance numpy


【解决方案1】:

这是一个纯粹的 numpy 解决方案。 a 是您的输入向量数组。您首先明智地创建距离分量,然后将它们平方,然后将它们对每一行求和,然后得到每个总和的 sqrt。

np.sqrt(np.sum((a[1:] - a[:-1])**2, axis=1))

数组([ 1.41421356, 1.73205081])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 2018-09-21
    • 2020-07-08
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多