我将参考点p_ref
存储在形状为(1024,)的numpy数组中,类似于:
print(p_ref)
>>> array([ 10.0, 11.0, 10.2, ..., 9.7])
[我还有一个numpy数组A_points
,其形状为(1024,5000),包含5000个点,每个点都具有p_ref
之类的1024个维度。我的问题:我想按A_points
到p_ref
的(祖父)距离对这些点进行排序!
我该怎么做?我读到有关scipy.spatial.distance.cdist
和scipy.spatial.KDTree
的信息,但是它们都没有完全按照我想要的去做,当我尝试将它们结合在一起时,我一团糟。谢谢!
我希望我能正确理解您,但是您可以使用numpy.linalg.norm计算两个向量之间的距离。使用它应该很简单:
sorted( mypoints, key = lambda x: numpy.linalg.norm(x - p_ref ) )
您可以做这样的事情-
A_points[np.linalg.norm(A_points-p_ref[:,None],axis=1).argsort()]
[另一个具有np.einsum
的效率应该比np.linalg.norm
-]高>
d = A_points-p_ref[:,None]
out = A_points[np.einsum('ij,ij->i',d,d).argsort()]