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=[('x', ' <i4'), ('y', ' <i4')]) a b="np.argsort(a," order="('x','y'))" c="np.argsort(a," < pre> <p> <strong>Output:</strong> </p> <pre> array([(0, 5), (3, 2)], dtype=[('x', ' <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 'a' using np.array() function with dtype=[('x', ' <i4'), ('y', ' <i4')].< li> <li>We have declared the variables 'b' and 'c' and assigned the returned value of np.argsort() function.</li> <li>We have passed the array 'a' and order as an argument in the function.</li> <li>Lastly, we tried to print the value of 'b' and 'c'.</li> </i4'),></li></ul> <p>In the output, a sorted array has been shown with dtype=[('x', ' <i4'), ('y', ' <i4')]< p> <hr></i4'),></p></i4'),></pre></i4'),>