Python 按整行/整列进行numpy排序
我正在尝试按numpy中的整行对2d数组进行排序:也就是说,每行中的元素在该行中应保持其顺序,但整行本身可以与另一行交换。对于每一行,它们的顺序由它们的元素决定:通过每个元素,如果第1行中的第i个元素与第2行相同,请查看第i+1元素。否则,取第i个元素较小的行:Python 按整行/整列进行numpy排序,python,numpy,matrix,Python,Numpy,Matrix,我正在尝试按numpy中的整行对2d数组进行排序:也就是说,每行中的元素在该行中应保持其顺序,但整行本身可以与另一行交换。对于每一行,它们的顺序由它们的元素决定:通过每个元素,如果第1行中的第i个元素与第2行相同,请查看第i+1元素。否则,取第i个元素较小的行: import numpy as np a = array([[1,2,3,4], [0,3,4,5], [1,2,4,5], [0,2,4,5],]) 返回:
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函数可以执行此操作?有。将a
(作为行,因此a.T
)的列作为排序键传入,注意最后一个键定义了主要排序顺序(因此使用a.T[:-1]
反转键):
>a[np.lexsort(a.T[:-1])]
数组([[0,2,4,5],
[0, 3, 4, 5],
[1, 2, 3, 4],
[1, 2, 4, 5]])