Евклидово расстояние от каждой точки до любой другой точки в Python + решение с помощью proc sqlPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Евклидово расстояние от каждой точки до любой другой точки в Python + решение с помощью proc sql

Сообщение Anonymous »

Я хотел бы рассчитать расстояния от каждой точки до каждой другой точки в Python, и я хочу сделать это с помощью цикла.
У меня есть решение с помощью proc sql, и я попробовал его с Python, но получил разные числа .
Вот моя таблица и код расстояния от одной точки до других точек:
import pandas as pd
data = {
'object': ['A', 'B', 'C', 'D'],
'value1': [79.826732673, 78.268876611, 64.04744255, 58.866103739],
'value2': [2.7227722772, 2.7624309392, 2.8910303929, 3.6188178528]
}
df = pd.DataFrame(data)

Это должен быть результат для A
x = df0["value1"]
y = df0["value2"]

x_ref = 79.826732673
y_ref = 2.7227722772

dist = np.sqrt((x-x_ref)**2 + (y-y_ref)**2) # euklidean distance
np.mean(dist)

Когда я использую цикл для определения расстояния от каждой точки до каждой точки, я получаю неверные числа.
for i in range(0,3):
x_ref = df0.iloc["value1"]
y_ref = df0.iloc["value2"]

eklidean = np.sqrt((df0["value1"] - x_ref)**2 + (df0["value2"] - y_ref)**2)

eklidean

object
A 15.780187
B 14.222015
C 0.000000
D 5.232203
dtype: float64

Не могли бы вы подсказать, что я делаю неправильно в цикле?
Вот также возможное решение в SAS proc sql (без цикл):
DATA points;
INPUT object $ value1 value2;
DATALINES;
A 79.826732673 2.7227722772
B 78.268876611 2.7624309392
C 64.04744255 2.8910303929
D 58.866103739 3.6188178528
;
RUN;

PROC SQL;
CREATE TABLE kombinations AS
SELECT a.object, A.value1, B.value1 as value1_dup, A.value2, B.value2 as value2_dup
FROM points a, points b;
QUIT;

proc sql; create table calculation as select *, sqrt((value1 - value1_dup)**2 + (value2 - value2_dup)**2) as euklidean from kombinations; quit;

proc sql; create table object_group as select object, avg(euklidean) as avg_euklidean from calculation group by object; quit;


Подробнее здесь: https://stackoverflow.com/questions/791 ... lution-wit
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»