ABOUT ME

Today
Yesterday
Total
  • 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] 라고 표시합니다.

Designed by Tistory.