我有一维数字,想要计算所有成对的欧氏距离.我有一个方法(感谢SO)用广播这样做,但它效率低,因为它计算每个距离两次.并且它不能很好地扩展.
这是一个例子,通过1000个数字的数组给出了我想要的东西.
import numpy as np
import random
r = np.array([random.randrange(1, 1000) for _ in range(0, 1000)])
dists = np.abs(r - r[:, None])
Run Code Online (Sandbox Code Playgroud)
什么是scipy/numpy/scikit中最快的实现 - 我可以用来做这个,因为它必须扩展到1D数组具有> 10k值的情况.
注意:矩阵是对称的,所以我猜测通过解决它可以获得至少2倍的加速,我只是不知道如何.