【发布时间】:2019-08-20 15:26:50
【问题描述】:
import numpy as np
import pandas as pd
from scipy.spatial.distance import directed_hausdorff
df:
1 1.1 2 2.1 3 3.1 4 4.1
45.13 7.98 45.10 7.75 45.16 7.73 NaN NaN
45.35 7.29 45.05 7.68 45.03 7.96 45.05 7.65
一对情侣的计算距离
x = df['3']
y = df['3.1']
P = np.array([x, y])
q = df['4']
w = df['4.1']
Q = np.array([q, w])
Q_final = list(zip(Q[0], Q[1]))
P_final = list(zip(P[0], P[1]))
directed_hausdorff(P_final, Q_final)[0]
期望的输出:
整个数据集的 for 循环过程相同
distance from a['0'], a['0']is 0
from a['0'], a['1'] is 0.234 (some number)
from a['0'], a['2'] is .. ...
从[0] 到所有,然后到[1] 到所有等等。
最后我应该得到一个对角线有0s`的矩阵
我试过了:
space = list(df.index)
dist = []
for j in space:
for k in space:
if k != j:
dist.append((j, k, directed_hausdorff(P_final, Q_final)[0]))
但是在[3] 和[4] 之间获得相同的距离值
【问题讨论】:
-
所以你的 Q/P 值总是使用 n 和 n + 0.1 的数组计算,然后你计算的距离是 x 和 x + 1?
标签: python pandas loops for-loop