下面的欧几里德距离算法创建MxN输入矩阵的行之间的距离的MxM矩阵(表示某个N维空间中的点).该算法的速度为O(m^2).如果只对彼此最接近的行(即点)感兴趣,这能得到改进吗?(我的下游任务包括执行K-NN等)
import numpy as np
vectors = np.random.randn(100, 20)
m = vectors.shape[0]
distances = np.zeros([m, m])
for i in range(m):
vec = vectors[i]
distances[i] = [np.linalg.norm(vec - vectors[j]) for j in range(m)]