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)