numpy按整个行/列排序

时间:2019-11-26 22:41:39

标签: python numpy matrix

我正在尝试按numpy的整个行对2d数组进行排序:也就是说,每行中的元素应在该行中按其顺序保留,但是整个行本身可以与另一行交换。对于每一行,它们的顺序由其元素确定:遍历每个元素,如果第1行中的ith元素与第2行相同,则查看ith + 1元素。否则,采用第ith个元素较小的行。 :

import numpy as np
a = array([[1,2,3,4],
           [0,3,4,5],
           [1,2,4,5],
           [0,2,4,5],])

返回:

          [[0,2,4,5],
           [0,3,4,5],
           [1,2,3,4],
           [1,2,4,5]]

是否有一个预建的numpy函数可以做到这一点?

1 个答案:

答案 0 :(得分:1)

np.lexsort。将a的列(作为行,因此是a.T)作为排序键,注意最后一个键定义了主要的排序顺序(因此用a.T[::-1]反转键):

>>> a[np.lexsort(a.T[::-1])]
array([[0, 2, 4, 5],
       [0, 3, 4, 5],
       [1, 2, 3, 4],
       [1, 2, 4, 5]])