python numpy euclidean distance calculation between matrices of row vectors
To get the distance you can use the norm method of the linalg module in numpy:
np.linalg.norm(x - y)
While you can use vectorize, @Karl's approach will be rather slow with numpy arrays.
The easier approach is to just do np.hypot(*(points - single_point).T)
. (The transpose assumes that points is a Nx2 array, rather than a 2xN. If it's 2xN, you don't need the .T
.
However this is a bit unreadable, so you write it out more explictly like this (using some canned example data...):
import numpy as npsingle_point = [3, 4]points = np.arange(20).reshape((10,2))dist = (points - single_point)**2dist = np.sum(dist, axis=1)dist = np.sqrt(dist)
import numpy as npdef distance(v1, v2): return np.sqrt(np.sum((v1 - v2) ** 2))