Python Numpy高效的Polar euclidean距离

时间:2015-04-21 17:28:07

标签: python numpy matrix vectorization euclidean-distance

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以使用scipy.spatial.distance.pdist。但是,如果您想要计算的距离是欧几里德距离,那么将点转换为直角坐标可能会更好,因为pdist将使用内置的欧几里德距离很快地进行计算。