Python Numpy эффективное полярное евклидово расстояние

У меня есть список из n полярных координат и функция расстояния, которая принимает две координаты.

Я хочу создать матрицу n x n, содержащую попарные расстояния под моей функцией. Я понимаю, что мне, вероятно, нужно использовать некоторую форму векторизации с numpy, но я точно не знаю, как это сделать.


person Nezo    schedule 21.04.2015    source источник
comment
Заголовок вашего вопроса и один из его тегов говорят о евклидовом расстоянии, но в тексте просто говорится о функции расстояния. Вы действительно пытаетесь вычислить евклидово расстояние или просто какую-то произвольную функцию расстояния?   -  person BrenBarn    schedule 21.04.2015


Ответы (2)


Простой сегмент кода приведен ниже для справки.

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
person pyan    schedule 21.04.2015