У меня есть два numpy массива A и B. Форма A - (м, 3), а форма B - (n, 3).
Эти матрицы выглядят так:
A
#output
array([[ 9.227, -4.698, -95.607],
[ 10.294, -4.659, -94.606],
[ 11.184, -5.906, -94.675],
...,
[ 19.538, -91.572, -45.361],
[ 20.001, -92.655, -45.009],
[ 19.271, -92.726, -45.79 ]])
Таким образом, он содержит для каждой строки координаты x, y, z трехмерной точки. B следует тому же формату.
У меня есть эта функция (np равно numpy):
def compute_dist(point1, point2):
squared = (point1-point2)**2
return (np.sqrt(np.sum(squares)))
Я хочу вычислить попарно расстояние между A и B, используя векторизованную функцию.
Я пытаюсь это сделать:
v = np.vectorize(compute_dist)
v(A, B)
#output
matrix([[37.442, 42.693, 72.705],
[37.442, 42.693, 72.705],
[37.442, 42.693, 72.705],
...,
[37.442, 42.693, 72.705],
[37.442, 42.693, 72.705],
[37.442, 42.693, 72.705]])
Я не понимаю, как использовать векторизацию, даже если я прочитал do c. Как я могу вычислить матрицу, которая содержит попарно расстояние между A и B? Я знаю, что есть scipy.distance.cdist , но я хочу сделать это сам с np.vectorize .
Меня не волнует формат вывода (список, массив, матрица ...). В конце я просто хочу найти минимальное расстояние.