Я хотел бы вычислить евклидово расстояние и поместить его в список. Я получаю ошибку диапазона, чего мне не хватает?

#python #numpy #loops

#python #numpy #циклы

Вопрос:

Я хотел бы оценить евклидово расстояние от фиксированной точки до нескольких точек, я хочу сделать это через цикл. Почему не работает? Я также пробовал без «-1» для диапазона, но все еще не работает

 from scipy.spatial import distance
vettore = np.array(np.mat('1 2; 3 4;6,7;8,9;10,12'))
posizione= np.array(np.mat('2,2'))


codio= []
for i in range(0,len(vettore)-1):
    codio[i]=distance.euclidean(vettore[i],posizione)
    
codio


>>> IndexError: list assignment index out of range
  

Ответ №1:

Как насчет distance_matrix :

 from scipy.spatial import distance_matrix

distance_matrix(vettore, posizione).ravel()
  

Вывод:

 array([ 1.        ,  2.23606798,  6.40312424,  9.21954446, 12.80624847])
  

Ответ №2:

Используйте append для добавления элемента в list

 codio= []
for i in range(0,len(vettore)-1):
    codio.append(distance.euclidean(vettore[i], posizione))
  

Однако лучшим подходом является использование distance_metrics в качестве ответа @Quang.