【问题标题】:Python Numpy efficient Polar euclidean distancePython Numpy 高效极地欧式距离
【发布时间】:2015-04-21 17:28:07
【问题描述】:

我有一个包含 n 个极坐标的列表,以及一个包含两个坐标的距离函数。

我想创建一个 n x n 矩阵,其中包含我的函数下的成对距离。我意识到我可能需要在 numpy 中使用某种形式的矢量化,但我不确定该怎么做。

【问题讨论】:

  • 你的问题的标题和它的标签之一说“欧几里得距离”,但文字只是说“距离函数”。您实际上是在尝试计算欧几里得距离,还是只是一些任意距离函数?

标签: python numpy matrix vectorization euclidean-distance


【解决方案1】:

下面是一个简单的代码段供您参考

import numpy as np

length = 10

coord_r = np.random.rand(length)*10
coord_alpha = np.random.rand(length)*np.pi

# Repeat vector to matrix form
coord_r_X = np.tile(coord_r, [length,1])
coord_r_Y = coord_r_X.T
coord_alpha_X = np.tile(coord_alpha, [length,1])
coord_alpha_Y = coord_alpha_X.T

matDistance = np.sqrt(coord_r_X**2 + coord_r_Y**2 - 2*coord_r_X*coord_r_Y*np.cos(coord_alpha_X - coord_alpha_Y))
print matDistance

【讨论】:

    【解决方案2】:

    您可以使用scipy.spatial.distance.pdist。但是,如果您要计算的距离是欧几里德距离,您最好将点转换为直角坐标,因为 pdist 将使用其内置的欧几里德距离非常快速地进行计算。

    【讨论】:

      猜你喜欢
      • 2016-10-14
      • 2017-08-10
      • 2021-09-15
      • 2015-03-12
      • 2018-09-09
      • 2015-04-25
      • 2017-11-02
      • 2019-11-08
      • 2021-12-27
      相关资源
      最近更新 更多