logo

Python의 numpy.argsort()

NumPy 모듈은 배열을 정렬할 인덱스를 반환하는 argsort() 함수를 제공합니다.

NumPy 모듈은 키워드로 지정된 알고리즘의 도움을 받아 주어진 축을 따라 간접 정렬을 수행하는 기능을 제공합니다. 이 함수는 배열을 정렬하는 'a'와 동일한 모양의 인덱스 배열을 반환합니다.

통사론

 numpy.argsort(a, axis=-1, kind=None, order=None) 

매개변수

numpy.argsort() 함수의 다음 매개변수는 다음과 같습니다.

숫자로 알파벳

a: array_like

이 매개변수는 정렬하려는 소스 배열을 정의합니다.

축: int 또는 None(선택 사항)

이 매개변수는 정렬이 수행되는 축을 정의합니다. 기본적으로 축은 -1입니다. 이 매개변수를 None으로 설정하면 평면화된 배열이 사용됩니다.

종류: {'quicksort','mergesort','heapsort','stable'}(선택 사항)

이 매개변수는 정렬 알고리즘을 정의합니다. 기본적으로 알고리즘은 다음과 같습니다. 퀵소트 . 둘 다 병합 정렬 그리고 안정적인 덮개 아래에서 시간 정렬을 사용하고 있습니다. 실제 구현은 데이터 유형에 따라 달라집니다. 그만큼 병합 정렬 옵션은 이전 버전과의 호환성을 위해 유지됩니다.

순서: str 또는 str 목록(선택 사항)

'a'가 정의된 필드가 있는 배열인 경우 이 인수는 첫 번째, 두 번째 등을 비교할 필드를 지정합니다. 단일 필드는 문자열로 지정할 수 있으며 모든 필드를 지정할 필요는 없습니다. 그러나 지정되지 않은 필드는 여전히 dtype에 나타나는 순서대로 연결을 끊는 데 사용됩니다.

CSS 굵은 텍스트

반환: index_array: ndarray, int

이 함수는 지정된 축을 따라 'a'를 정렬하는 인덱스 배열을 반환합니다. 'a'가 1차원인 경우 a[index_array]는 정렬된 'a'를 생성합니다. 더 일반적으로, np.take_along_axis(arr1, index_array, 축=축) 차원에 관계없이 항상 정렬된 'a'를 생성합니다.

예시 1: np.argsort()

 import numpy as np a=np.array([456,11,63]) a b=np.argsort(a) b 

위의 코드에서

  • 별칭 이름이 np인 numpy를 가져왔습니다.
  • np.array() 함수를 사용하여 'a' 배열을 만들었습니다.
  • 변수 'b'를 선언하고 np.argsort() 함수의 반환 값을 할당했습니다.
  • 함수에 배열 'a'를 전달했습니다.
  • 마지막으로 b의 값을 출력해 보았습니다.

출력에는 인덱스(정렬된 배열의 요소 위치를 나타냄)와 dtype을 포함하는 ndarray가 표시되었습니다.

산출:

 array([456, 11, 63]) array([1, 2, 0], dtype=int64) 

예 2: 2차원 배열의 경우(첫 번째 축을 따라 정렬(아래쪽))

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.argsort(a, axis=0) indices 

산출:

 array([[0, 1], [1, 0]], dtype=int64) 

예 3: 2차원 배열의 경우(축=0 대체)

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.argsort(a, axis=0) indices np.take_along_axis(a, indices, axis=0) 

위의 코드에서

  • 별칭 이름이 np인 numpy를 가져왔습니다.
  • np.array() 함수를 사용하여 2차원 배열 'a'를 만들었습니다.
  • 변수 인덱스를 선언하고 np.argsort() 함수의 반환 값을 할당했습니다.
  • 2차원 배열 'a'와 축을 0으로 전달했습니다.
  • 다음으로 take_along_axis() 함수를 사용하고 소스 배열, 인덱스 및 축을 전달했습니다.
  • 이 함수는 정렬된 2차원 배열을 반환했습니다.

출력에는 정렬된 요소가 포함된 2차원 배열이 표시되었습니다.

pyspark

산출:

 array([[0, 2], [3, 5]]) 

예제 4: 2차원 배열의 경우(마지막 축(가로)을 따라 정렬)

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.argsort(a, axis=1) indices 

산출:

 array([[0, 1], [1, 0]], dtype=int64) 

예제 5: 2차원 배열의 경우(축=1 대체)

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.argsort(a, axis=1) indices np.take_along_axis(a, indices, axis=1) 

산출:

 array([[0, 2], [3, 5]]) 

예제 6: N차원 배열의 경우

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.unravel_index(np.argsort(a, axis=None), a.shape) indices a[indices] # same as np.sort(a, axis=None) 

산출:

 (array([0, 1, 1, 0], dtype=int64), array([0, 1, 0, 1], dtype=int64)) array([0, 2, 3, 5]) 

위의 코드에서

  • 별칭 이름이 np인 numpy를 가져왔습니다.
  • np.array() 함수를 사용하여 2차원 배열 'a'를 만들었습니다.
  • 'indices' 변수를 선언하고 np.unravel_index() 함수의 반환 값을 할당했습니다.
  • np.argsort() 함수와 배열 'a'의 모양을 전달했습니다.
  • argsort() 함수에서 2차원 배열 'a'와 축을 1로 전달했습니다.
  • 다음으로 index와 a[indices]의 값을 출력해 보았습니다.

출력에는 정렬된 요소가 있는 N차원 배열이 표시되었습니다.

리눅스 make 명령

예시 7: 키를 사용한 정렬

 import numpy as np a= np.array([(0, 5), (3, 2)], dtype=[(&apos;x&apos;, &apos; <i4'), ('y', ' <i4')]) a b="np.argsort(a," order="(&apos;x&apos;,&apos;y&apos;))" c="np.argsort(a," < pre> <p> <strong>Output:</strong> </p> <pre> array([(0, 5), (3, 2)], dtype=[(&apos;x&apos;, &apos; <i4'), ('y', ' <i4')]) array([0, 1], dtype="int64)" array([1, 0], < pre> <p> <strong>In the above code</strong> </p> <ul> <li>We have imported numpy with alias name np.</li> <li>We have created a 2-D array &apos;a&apos; using np.array() function with dtype=[(&apos;x&apos;, &apos; <i4'), ('y', ' <i4')].< li> <li>We have declared the variables &apos;b&apos; and &apos;c&apos; and assigned the returned value of np.argsort() function.</li> <li>We have passed the array &apos;a&apos; and order as an argument in the function.</li> <li>Lastly, we tried to print the value of &apos;b&apos; and &apos;c&apos;.</li> </i4'),></li></ul> <p>In the output, a sorted array has been shown with dtype=[(&apos;x&apos;, &apos; <i4'), ('y', ' <i4')]< p> <hr></i4'),></p></i4'),></pre></i4'),>