/ / Python Numpy ефективно Полярно евклидово разстояние - питън, изображение, матрица, векторизация, евклидово разстояние

Python Numpy ефективно Полярно евклидово разстояние - питън, изображение, матрица, векторизация, евклидово разстояние

Имам списък с n полярни координати и функция за разстояние, която отнема две координати.

Искам да създам n x n матрица, която съдържа двойките разстояния под моята функция. Аз осъзнавам, че вероятно трябва да използвам някаква форма на векторизация с мрачен, но не съм сигурен точно как да го направя.

Отговори:

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

0 за отговор № 2

Можеш да използваш scipy.spatial.distance.pdist, Ако обаче разстоянието, което искате да изчислите, е евклидовото разстояние, може да сте по-добре просто да преобразувате точките си в правоъгълни координати, тъй като тогава pdist ще направи изчисленията доста бързо, използвайки вграденото си Euclidean разстояние.