如何在不改变每一行值的情况下对数组中的行进行排序? 此外:如何获得这种分类过程的指标?
输入:
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
?
答案 0 :(得分:2)
您需要在这里lexsort
:
b = np.lexsort((a[:, 1], a[:, 0]))
# array([1, 4, 3, 5, 2, 0], dtype=int64)
并应用于您的初始数组:
>>> a[b]
array([[0, 3],
[1, 2],
[1, 3],
[2, 0],
[3, 0],
[4, 3]])
@miradulo指出,您还可以使用:
b = np.lexsort(np.fliplr(a).T)
比显式说明要排序的列还不那么冗长。