我有一个像这样的numpy数组:
A = array([[1, 3, 2, 7],
[2, 4, 1, 3],
[6, 1, 2, 3]])
我想按降序对这个矩阵的行进行排序,并得到排序矩阵的参数,如下所示:
As = array([[3, 1, 2, 0],
[1, 3, 0, 2],
[0, 3, 2, 1]])
我做了以下事情:
import numpy
A = numpy.array([[1, 3, 2, 7], [2, 4, 1, 3], [6, 1, 2, 3]])
As = numpy.argsort(A, axis=1)
但这让我按升序排序。此外,在我花了一些时间在互联网上寻找解决方案后,我希望numpy必须有一个argsort
函数的参数,它会颠倒排序顺序。但是,显然没有这样的论点!为什么!?
有一个名为order
的论点。我试着猜测numpy.argsort(..., order=reverse)
,但它不起作用。
我在此前的问题中寻找解决方案,我发现我可以做到:
import numpy
A = numpy.array([[1, 3, 2, 7], [2, 4, 1, 3], [6, 1, 2, 3]])
As = numpy.argsort(A, axis=1)
As = As[::-1]
出于某种原因,As = As[::-1]
没有给我所需的输出。
嗯,我想这一定很简单,但我错过了一些东西。
如何按降序对numpy数组进行排序?
答案 0 :(得分:17)
只需将矩阵乘以-1即可逆序:
[In]: A = np.array([[1, 3, 2, 7],
[2, 4, 1, 3],
[6, 1, 2, 3]])
[In]: print( np.argsort(-A) )
[Out]: [[3 1 2 0]
[1 3 0 2]
[0 3 2 1]]