Мне даны два numpy массива: один из измерений i x m
и другой из измерений j x m
. То, что я хочу сделать, это l oop через FirstArray и сравнить каждый из его элементов с каждым из элементов SecondArray. Когда я говорю «сравнить», я имею в виду: я хочу вычислить евклидово расстояние между элементами FirstArray и SecondArray. Затем я хочу сохранить индекс элемента SecondArray, который находится ближе всего к соответствующему элементу FirstArray, и я также хочу сохранить индекс элемента SecondArray, который находится ближе всего к элементу FirstArray.
В коде это будет выглядеть примерно так:
smallest = None
idx = 0
for i in range(0, FirstArrayRows):
for j in range(0, SecondArrayRows):
EuclideanDistance = np.sqrt(np.sum(np.square(FirstArray[i,:] - SecondArray[j,:])))
if smallest is None or EuclideanDistance < smallest:
smallest = EuclideanDistance
idx_second = idx
idx = j
Closest[i] = idx
SecondClosest[i] = idx_second
И я думаю, что это работает. Тем не менее, есть два случая, когда этот код не может дать правильный индекс для второго ближайшего элемента SecondArray:
- , когда элемент SecondArray, ближайший к элементу FirstArray, имеет значение j = 0 .
- когда элемент SecondArray, ближайший к элементу FirstArray, находится в точке j = 1.
Поэтому мне интересно: есть ли лучший способ реализовать это? Я знаю, что есть. Может быть, кто-то может помочь мне увидеть это?