如何从按行排序2d numpy数组中返回索引?

时间:2019-07-05 18:26:53

标签: python numpy sorting

输入:2D numpy数组

输出:索引数组,将按行(或按列)对数组进行排序

例如:说函数是get_sorted_indices(array,axis = 0)

a = np.array([[1,2,3,4,5]
             ,[2,3,4,5,6]
             ,[1,2,3,4,5]
             ,[2,3,4,6,6]
             ,[2,3,4,5,6]])

ind = get_sorted_indices(a, axis=0)

那我们将得到

>>> ind 
[0, 2, 1, 4, 3]
>>> a[ind]   # should be equals to a.sort(axis = 0)
array([[1, 2, 3, 4, 5],
       [1, 2, 3, 4, 5],
       [2, 3, 4, 5, 6],
       [2, 3, 4, 5, 6],
       [2, 3, 4, 6, 6]])
>>> a.sort(axis=0) 
array([[1, 2, 3, 4, 5],
       [1, 2, 3, 4, 5],
       [2, 3, 4, 5, 6],
       [2, 3, 4, 5, 6],
       [2, 3, 4, 6, 6]])

我看过argsort,但是我不了解它的输出,阅读文档也无济于事:

>>> a.argsort() 
array([[0, 1, 2, 3, 4],
       [0, 1, 2, 3, 4],
       [0, 1, 2, 3, 4],
       [0, 1, 2, 3, 4],
       [0, 1, 2, 3, 4]])

>>> a.argsort(axis=0) 
array([[0, 0, 0, 0, 0],
       [2, 2, 2, 2, 2],
       [1, 1, 1, 1, 1],
       [3, 3, 3, 4, 3],
       [4, 4, 4, 3, 4]])

我可以手动执行此操作,但是我认为我误解了argsort或缺少numpy中的某些内容。 有没有一种标准的方法可以执行此操作,或者我只能手动执行此操作?

0 个答案:

没有答案