The fastest you'll get with the numpy/scipy stack is a specialized function just for this purpose scipy.spatial.distance.cdist
.
scipy.spatial.distance.cdist(XA, XB, metric='euclidean', p=2, ...)
Computes distance between each pair of the two collections of inputs.
It's also worth noting that scipy provides kmeans clustering as well.