У меня есть матрица и вектор центроидов каждой строки в матрице. Я хотел бы сравнить каждый элемент в матрице с каждым элементом в векторе и найти, какой элемент в векторе центроидов находится ближе всего к точке данных в матрице. Есть ли способ сделать это без использования цикла? Я буду использовать большое количество данных и хочу, чтобы они были максимально быстрыми
Вот очень простой пример того, как я делаю это прямо сейчас на python:
import scipy as sp
test_array = sp.array([(1,1,1),(3,4,5),(6,12,18)])
sumx = test_array.sum(axis=1)
centroid_vector = sumx / len(test[0])
for i in centroid_vector:
x = abs(test_array - i)
minimum = sp.argmin(x)
Желаемый результат - это матрица с минимальным расстоянием, исходным значением (из test_array) и индексом элемента в векторе центроида, до которого расстояние является наименьшим. В этом случае это будет выглядеть примерно так:
[(0, 1, 1),
(0, 1, 1),
(0, 1, 1),
(1, 3, 2),
(0, 4, 2),
...
(6, 18, 3)]