我想测量5维数据集之间的距离(欧几里德)。 它看起来像这样:
center x
0 [0.09771348879, 1.856078237, 2.100760575, 9.25... [-1.35602640228e-12, -2.94706481441e-11, -6.51...
1 [8.006780488, 1.097849488, 0.6275244427, 0.572... [4.99212418613, 5.01853294023, -0.014304672946...
2 [-1.40785823, -1.714959744, -0.5524032233, -0.... [-1.61000102139e-11, -4.680034138e-12, 1.96087...
索引,然后是点(中心),第三个是另一个点(x),所有的点都是5D。 我想使用pdist,因为它适用于n-d。但问题是这些点在矩阵X中被排列为m个n维行向量。虽然我上面只有数据格式而不是矩阵,并且包含了它不应该的索引。
我的代码是:( S是上面的格式)
S = pd.DataFrame(paired_data, columns=['x','center'])
print (S.to_string())
Y = pdist(S[1:], 'euclidean')
print Y
答案 0 :(得分:0)
这似乎有效:
for i in range(S.shape[0]):
M = np.matrix( [S['x'][i], S['center'][i]] )
print pdist(M, 'euclidean')
或iterrows()
:
for row in S.iterrows():
M = np.matrix( [row[1]['x'], row[1]['center']] )
print pdist(M, 'euclidean')
请注意,不需要创建矩阵,pdist
将处理python列表很好:
for row in S.iterrows():
print pdist([row[1]['x'], row[1]['center']], 'euclidean')