我在numpy比较新,我想对一个数组进行排序,以找到一个具有最低x 和 y值的点。
如何在numpy中对以下数组进行排序,以便按升序对第一列进行排序,即x坐标值,然后是第二列,即y坐标?
[[0.1, 0.2]
[0.5, 0.1]
[0.3, 0.9]
[0.7, 1.0]
[0.1, 0.3]
[0.2, 0.3]]
我看过关于numpy.sort的答案,但我不明白轴排序的含义是什么。
答案 0 :(得分:5)
您可以使用numpy.lexsort
。这将执行间接词典排序。由于某种原因,它首先对最后一行进行排序,因此在您的情况下,我们必须采用转置并反转x
和y
的顺序。
>>> A
array([[0.1, 0.2],
[0.5, 0.1],
[0.3, 0.9],
[0.7, 1. ],
[0.1, 0.3],
[0.2, 0.3]])
>>> A[np.lexsort(A.T[::-1])]
array([[0.1, 0.2],
[0.1, 0.3],
[0.2, 0.3],
[0.3, 0.9],
[0.5, 0.1],
[0.7, 1. ]])