본문 바로가기
파이썬

파이썬 numpy를 사용하여 내림차순으로 정렬하는 방법은 무엇입니까?

by º기록 2020. 11. 6.
반응형

다음과 같은 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 배열을 내림차순으로 정렬하려면 어떻게해야합니까?

 

해결 방법

 

역순으로 행렬에 -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]]

 

참조 페이지 https://stackoverflow.com/questions/36265930

 

 

반응형

댓글