在 NumPy 中对数组进行排序,在一列上升序,在另一列上降序

Sud*_*mar 2 python arrays sorting numpy matrix

如何按第一列升序和第二列降序对 NumPy 中的二维数组进行排序?

例如,

a = array([[9, 2, 3],
           [4, 5, 6],
           [7, 0, 5],
           [7, 1, 6]])
Run Code Online (Sandbox Code Playgroud)

结果 :

array([[4, 5, 6],
       [7, 1, 6],
       [7, 0, 5],
       [9, 2, 3]])
Run Code Online (Sandbox Code Playgroud)

Clo*_*ave 5

您可以使用该np.lexsort功能来实现此目的

import numpy as np
a = np.asarray([[9, 2, 3],
           [4, 5, 6],
           [7, 0, 5],
           [7, 1, 6]])

a[np.lexsort((-a[:, 1], a[:, 0]))]
Run Code Online (Sandbox Code Playgroud)

输出

array([[4, 5, 6],
       [7, 1, 6],
       [7, 0, 5],
       [9, 2, 3]])
Run Code Online (Sandbox Code Playgroud)