[NumPy] sorting: 정렬

2022. 9. 10. 15:19·Programming
728x90
728x90

Numpy에서 지원하는 sorting method(or function)은

Numpy의 특성상 같은 데이터타입의 array이므로,

Python에서 제공하는 built-in function들보다 효율성이 높음.


copy based sorting

컴퓨팅 자원이 충분하다면, 개인적으로 아래와 같이 copy를 반환하는 게 가장 편하다.

import numpy as np  

x = np.array([3,4,1,2,5,7,6])  
y = np.sort(x) # return a sorted copy of x  
print(y)

결과는 다음과 같음.

[1 2 3 4 5 6 7]  

역순 정렬은 다음과 같이 처리

import numpy as np  

x = np.array([3,4,1,2,5,7,6])  
y = np.sort(x)[::-1]  
print(y)

결과는 다음과 같음.

[7 6 5 4 3 2 1]  

In-place sorting: view를 이용한

하지만, NumPy의 경우 큰 크기의 array를 다루어야 하므로
in-place 처리가 나을 수도 있음.

import numpy as np  

x = np.array([3,4,1,2,5,7,6])  
y = x.sort() # in-place sort. it returns None (y=None)  
print(y)

 

여기서, y는 None이며, 실제 x가 정렬이 됨.

[1 2 3 4 5 6 7]  

역순정렬은 다음과 같음.

import numpy as np  

x = np.array([3,4,1,2,5,7,6])  
x[::-1].sort()  
print(x)

결과는 다음과 같음.

[7 6 5 4 3 2 1]  

index 관련 정렬

실제 sort의 결과를 index로 처리하도록 해주는 argsort의 활용도 자주 있으므로 익혀두는게 좋음.

(argmax처럼 index에 대한 처리임.)

import numpy as np  

x = np.array([3,4,1,2,5,7,6])  
idx = x.argsort() # it will be used by fancy indexing  
print(idx)

 

idx는 다음과 같이 정렬(sorting)이 x의 index로 결과가 나옴. 인덱스가 2에서 가장 작은 값인 1을 가지므로, 2가 가장 앞에 위치함.

[2 3 0 1 4 6 5]  

fancy indexing과 같이 sorting된 index의 array를 다음과 같이 사용됨.

print(x[idx])

결과는 다음과 같음.

[1 2 3 4 5 6]  

역순으로 정렬하는 것은 다음과 같음.

import numpy as np  

x = np.array([3,4,1,2,5,7,6])  
y = np.argsort(x)[::-1]  
print(y)

 

결과는 다음과 같음

[5 6 4 1 0 3 2]  

같이보면 좋은 자료들

https://ds31x.tistory.com/344

 

[Summary] NumPy(Numerical Python)

파이썬 생태계에서 과학적 계산의 기본이 되는 라이브러리 NumPy는 파이썬에서 과학 계산과 수치 연산을 효율적으로 처리하기 위한 라이브러리 n-dimensional array(다차원 배열)인 ndarray 객체를 중

ds31x.tistory.com

 

'Programming' 카테고리의 다른 글

[CE] Introduction of WSL  (0) 2022.12.22
openCV : cv2.waitKey bug  (1) 2022.10.21
Paradigm (패러다임)  (0) 2022.07.21
[Python] 현재 사용 중인 Python 및 패키지의 실제 경로 확인하기.  (2) 2022.07.18
[ML] Summary SVM  (0) 2022.05.30
'Programming' 카테고리의 다른 글
  • [CE] Introduction of WSL
  • openCV : cv2.waitKey bug
  • Paradigm (패러다임)
  • [Python] 현재 사용 중인 Python 및 패키지의 실제 경로 확인하기.
dsaint31x
dsaint31x
    반응형
    250x250
  • dsaint31x
    Dsaint31's blog
    dsaint31x
  • 전체
    오늘
    어제
    • 분류 전체보기 (739)
      • Private Life (13)
      • Programming (56)
        • DIP (104)
        • ML (26)
      • Computer (119)
        • CE (53)
        • ETC (33)
        • CUDA (3)
        • Blog, Markdown, Latex (4)
        • Linux (9)
      • ... (350)
        • Signals and Systems (103)
        • Math (171)
        • Linear Algebra (33)
        • Physics (42)
        • 인성세미나 (1)
      • 정리필요. (54)
        • 의료기기의 이해 (6)
        • PET, MRI and so on. (1)
        • PET Study 2009 (1)
        • 방사선 장해방호 (4)
        • 방사선 생물학 (3)
        • 방사선 계측 (9)
        • 기타 방사능관련 (3)
        • 고시 (9)
        • 정리 (18)
      • RI (0)
      • 원자력,방사능 관련법 (2)
  • 블로그 메뉴

    • Math
    • Programming
    • SS
    • DIP
  • 링크

    • Convex Optimization For All
  • 공지사항

    • Test
    • PET Study 2009
    • 기타 방사능관련.
  • 인기 글

  • 태그

    검사
    signal_and_system
    linear algebra
    Python
    Convolution
    Probability
    Optimization
    fourier transform
    SS
    numpy
    SIGNAL
    인허가제도
    Programming
    Term
    Vector
    random
    opencv
    function
    math
    signals_and_systems
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dsaint31x
[NumPy] sorting: 정렬
상단으로

티스토리툴바