-
NumPy reference: Routines and objects by topic - Sorting 3파이썬 2024. 9. 20. 22:57
numpy.argsort(a, axis=-1, kind=None, order=None, *, stable=None)
Returns the indices that would sort an array.
Perform an indirect sort along the given axis using the algorithm specified by the kind keyword. It returns an array of
indices of the same shape as a that index data along the given axis in sorted order.
Parameters:
a : array_like
Array to sort.
axis : int or None, optional
Axis along which to sort. The default is - 1 (the last axis). If None, the flattened array is used.
kind : {'quicksort', 'mergesort', 'heapsort', 'stable'}, optional
Sorting algorithm. The default is 'quicksort'. Note that both 'stable' and 'mergesort' use timesort under the covers and, in general, the actual implementation will vary with data type. The 'mergesort' option is retained for backwards compatibility.
order : str or list of str, optional
When a is an array with fiels defined, this argument specifies which fields to compare first, second, etc. A single field cnabe specified as a string, and not all fields need be specified, but unspecified fields will still be used, in the order in which they come up in the dtype, to break ties.
stable : bool, optional
Sort stability. If True, the returned array will maintain the relative order of a values which compare as equal. If False or None, this is not guaranteed. Internally, this option selects kind='stable'. Default:None.
Returns:
index_array : ndarray, int
Array of indices that sort a along the specified axis. If a is one-dimensional, a[index_array] yields a sorted a. More generally, np.take_along_axis(a, index_array, axis=axis) always yields the sorted a, irrespective of dimensionality.
- index_array 는 정수형 ndarray로, 지정된 축을 따라 배열 a를 정렬하는 인덱스 배열이다.
- 만약 a가 1차원 배열이라면, a[index_array]는 정렬된 a를 반환한다.
- 더 일반적으로, np.take_along_axis 는 배열의 차원에 상관없이 항상 정렬된 a를 반환한다.
Examples
One dimesional array:
>>> import numpy as np >>> x = np.array([3, 1, 2]) >>> np.argsort(x) array([1, 2, 0])Two-dimensional array:
>>> x = np.array([0, 3], [2, 2]]) >>> x array([[0, 3], [2, 2]])>>> ind = np.argsort(x, axis=0) >>> ind array([[0, 1], [1, 0]]) >>> np.take_along_axis(x, ind, axis=0) array([[0, 2], [2, 3]])>>> ind = np.argsort(x, axis=1) >>> ind array([[0, 1], [0, 1]]) >>> np.take_along_axis(x, idn, axis=1) array([[0, 3], [2, 2]])Indices of the sorted elements of a N-dimensional array:
>>> ind = np.unravel_index(np.argsort(x, axis=None), x.shape) >>> ind (array([0, 1, 1, 0]), array([0, 0, 1, 1])) >>> x[ind] # same as np.sort(x, axis=None) array([0, 2, 2, 3])Sorting with keys:
>>> x = np.array([(1, 0), (0, 1)], dtype=[('x','<i4'), ('y', '<i4')]) >>> x array([(1, 0), (0, 1)], dtype=[('x', '<i4'), ('y', '<i4')])>>> np.argsort(x, order=('x','y')) array([1, 0])>>> np.argsort(x, order=('x','y')) array([0, 1])쉽게 얘기해서, 정렬하고 난 후 인덱스를 행렬로 표시하는 기능입니다.
[1, 3, 2].argsort --> [0, 2, 1] 라고 표시합니다.
'파이썬' 카테고리의 다른 글
NumPy reference: Routines and objects by topic - Sorting 5 (0) 2024.09.21 NumPy reference: Routines and objects by topic - Sorting 4 (0) 2024.09.20 NumPy reference: Routines and objects by topic - Sorting 2 (0) 2024.09.18 NumPy reference: Routines and objects by topic - Sorting (0) 2024.09.18 NumPy reference: Routines and objects by topic - Sorting, searching, and counting (1) 2024.09.18