Я пробовал следующее решение, и оно, похоже, работает.Я считаю, что, возможно, несколько индексов с минимальным евклидовым расстоянием.
import numpy as np
plot1 = [1.0, 2.0, 3.0]
plot2 = [(1.0, 4.0, 5.0),
(4.0, 7.0, 90.0),
(1.0, 4.0, 5.0),
(-1.0, -4.0, -5.0)]
indexes = []
for i in range(len(plot2)): # To get one element at a time from plot2
plotk = plot2[i]
S = np.linalg.norm(np.array(plot1) - np.array(plotk))
print("Distance between plot1 and plotk is %f" %(S)) # euclidian distance is calculated
if (i == 0):
Smin = S
Sminant = S
indexes.append(i)
else:
if (S < Sminant):
Smin = S
indexes = []
indexes.append(i)
elif (S == Sminant):
indexes.append(i)
print('indexes:')
print(indexes)
for i in range(len(indexes)):
print("VAlues of Slist with min \n",indexes[i], plot2[indexes[i]],Smin)
Результаты выглядят следующим образом:
Расстояние между plot1 и plotk равно 2.828427 Расстояние между plot1 и plotk равно 87.195183 Расстояние между plot1 и plotk2.828427 Расстояние между plot1 и plotk составляет 10.198039 индексов: [0, 2] VAlues of Slist с min
0 (1.0, 4.0, 5.0) 2.8284271247461903 VAlues of Slist с min
2 (1.0, 4.0, 5.0) 2.8284271247461903