Python numpy sort 2d:重新排列行而不更改行中的值

Python numpy sort 2d:重新排列行而不更改行中的值,python,numpy,Python,Numpy,如果不更改每行中的值,如何对数组中的行进行排序? 此外:如何获得该排序过程的指标 输入: a = np.array([[4,3],[0,3],[3,0],[1,3],[1,2],[2,0]]) 所需的排序规则: b = np.array([1,4,3,5,2,0]) a = a[b] 输出: a = np.array([[0,3],[1,2],[1,3][2,0],[3,0],[4,3]]) 如何获取您在此处需要的阵列b?: 并应用于初始阵列: >>> a[b] arra

如果不更改每行中的值,如何对数组中的行进行排序? 此外:如何获得该排序过程的指标

输入:

a = np.array([[4,3],[0,3],[3,0],[1,3],[1,2],[2,0]])
所需的排序规则:

b = np.array([1,4,3,5,2,0])
a = a[b]
输出:

a = np.array([[0,3],[1,2],[1,3][2,0],[3,0],[4,3]])
如何获取您在此处需要的阵列
b

并应用于初始阵列:

>>> a[b]
array([[0, 3],
       [1, 2],
       [1, 3],
       [2, 0],
       [3, 0],
       [4, 3]])
正如@miradulo指出的,您还可以使用:

b = np.lexsort(np.fliplr(a).T)

这比显式说明要排序的列要简单得多。

Get
b
from what?输入是什么?我只找到了这个,我可以根据第一个值进行排序;但是第二个值之前没有考虑,我没有排序数组a[a[:,1]。argsort()]“a”是输入值;我试着找出如何得到数组“b”IIUC,你可以把它写成:
ab=a[b]
,然后说如何从
ab
a
中得到
b
。这是我回答的第一行,
lexsort
给你排序的指标,或者
np.lexsort(np.fliplr(a.T)
,非常方便。哦,这很有用,尤其是随着列数的增加
b = np.lexsort(np.fliplr(a).T)