按多个轴对2D numpy数组进行排序

10 浏览
0 Comments

按多个轴对2D numpy数组进行排序

我有一个形状为(N,2)的二维numpy数组,其中包含N个点(x和y坐标)。例如:

array([[3, 2],
       [6, 2],
       [3, 6],
       [3, 4],
       [5, 3]])

我想对其进行排序,使得点按照x坐标排序,当x坐标相同时,则按照y坐标排序。所以上面的数组应该变成这样:

array([[3, 2],
       [3, 4],
       [3, 6],
       [5, 3],
       [6, 2]])

如果这是一个普通的Python列表,我可以简单地定义一个比较器来实现我的目标,但据我所知,numpy的排序函数不接受用户定义的比较器。有什么想法吗?


编辑:谢谢你们的建议!我设置了一个快速的测试案例,其中包含1000000个随机整数点,并对能够运行的方法进行了基准测试(抱歉,暂时无法升级numpy)。

我的方法:4.078秒
mtrw的方法:7.046秒
unutbu的方法:0.453秒

0