2 массива Plot1 имеют форму plot1 = [1.0, 2.0, 3.0] (1X4)
, и мы имеем tp найти минимальное расстояние plot1 с plot2, (plot2, в котором хранится несколько массивов). Мы хотим, чтобы O / P как i) минимальное расстояние между всеми точкамиfrom plot2 (Smin) ii) Индекс, в котором хранится точка. iii) Индекс массива, в котором хранится точка. Мой код работает, когда plot2 имеет один массив. Но происходит сбой, когда он имеет несколько массивов как
plot2 = np.array([[(1.0, 4.0, 5.0),(4.0, 7.0, 90.0),(1.0, 4.0, 5.0)],
[(2.9,3.2,3.3),(2.3,2.6,5.5),(2.4,3.5,4.4)],
[(2.9,3.2,3.3),(2.3,2.6,5.5),(2.4,3.5,4.4)]])
Итак, мой рабочий код
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
Sminant=Smin
indexes = []
indexes.append(i)
elif (S == Sminant):
indexes=[]
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)