web-dev-qa-db-ja.com

numpyで降順で並べ替える方法は?

私はこのような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配列を降順でソートするにはどうすればよいですか?

9
Ribz

マトリックスに-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]]
19
Swier