Я пытаюсь вычислить метрики расстояния между двумя двумерными массивами, скажем, A и B (n 'строк' x 6 'столбцов' каждый), используя функции scipy.spatial.distance
. Я хотел бы рассчитать эти расстояния между каждой парой наблюдений , которые соответствуют одному и тому же индексу (например, между A [i ,:] и B [i ,:])) эффективно (т.е. без зацикливания по индексу массива ).
Я знаю, что scipy.spatial.distance.cdist
достигает этого быстро, но между всеми парами наблюдений, включая те, которые не совпадают по индексу. Поэтому я ищу кванталент, но только для наблюдений с сопоставлением индексов.
Вот простой пример для вычисления евклидова расстояния:
import numpy as np
from scipy.spatial import distance
a = np.array([[1, 5, 6, 7, 8, 7, 9], [5, 7, 8, 6, 4, 1, 2]])
b = np.array([[9, 8, 9, 5, 7, 1, 2], [1, 5, 5, 7, 2, 1, 1]])
print(distance.cdist(a, b, 'euclidean')) # Compute the euclidean distance between each pair
for i in range(0, len(a), 1):
print(distance.euclidean(a[i,:], b[i,:])) # Do the job but too long
Спасибо за вашу помощь!