如何用numpy降序排序?

Rib*_*ibz 9 python sorting numpy

我有一个像这样的numpy数组:

A = array([[1, 3, 2, 7],
           [2, 4, 1, 3],
           [6, 1, 2, 3]])
Run Code Online (Sandbox Code Playgroud)

我想按降序排序这个矩阵的行,并得到排序矩阵的参数,如下所示:

As = array([[3, 1, 2, 0],
            [1, 3, 0, 2],
            [0, 3, 2, 1]])
Run Code Online (Sandbox Code Playgroud)

我做了以下事情:

import numpy
A = numpy.array([[1, 3, 2, 7], [2, 4, 1, 3], [6, 1, 2, 3]])
As = numpy.argsort(A, axis=1)
Run Code Online (Sandbox Code Playgroud)

但这让我按升序排序.此外,在我花了一些时间在互联网上寻找解决方案后,我希望必须有一个参数来argsort从numpy运行,这将颠倒排序的顺序.但是,显然没有这样的论点!为什么!?

有一个称为的论点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]
Run Code Online (Sandbox Code Playgroud)

出于某种原因,As = As[::-1]不给我想要的输出.

好吧,我想这一定很简单,但我错过了一些东西.

如何按降序对numpy数组进行排序?

Swi*_*ier 20

只需将矩阵乘以-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]]
Run Code Online (Sandbox Code Playgroud)