2015-03-06 3 views
0

Я хочу измерить расстояние (евклидово) между наборами данных 5 измерений. Это выглядит следующим образом:Измерение расстояния между набором данных 5D

    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... 

индекса, то точка (в центре), а третий является другой точкой (х), все точки 5D. Я хочу использовать pdist, поскольку он применим к n-d. Но проблема в том, что точки расположены как m n-мерные векторы строк в матрице X. Хотя то, что у меня выше, является только форматом данных, а не матрицей, и содержит также индекс, который он не должен.

Мой код :(S является выше формат)

S = pd.DataFrame(paired_data, columns=['x','center']) 

print (S.to_string()) 

Y = pdist(S[1:], 'euclidean') 
print Y 

ответ

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') 
+0

Первый выглядит как работающий. Благодарю. Если я хочу суммировать все расстояния, которые я получил в конце, как я могу это сделать? – Micheal