[NumPy] searchsorted

2023. 3. 29. 15:42·Programming
728x90
728x90

np.searchsorted

sort가 된 기존의 ndarray A 에 대해,

입력으로 주어지는 ndarray B 의 element들의 값을 보고

기존의 ndarray A 의 어느 index에 놓이게 될지를 반환한다.

  • 반환되는 ndarray의 shape는 query에 해당하는 B와 같다.
  • 기본으로는 left를 기준으로 index를 반환한다. 같은 값이 이미 존재하는 경우, 해당 값의 위치의 left에 삽입하는 것으로 생각하고 index 반환.
import numpy as np

list_a = [1, 2, 3, 4, 5]
list_b = [2.5, 4]

print(np.searchsorted(list_a, list_b))

결과는 다음과 같다.

[2 3]
  • A는 [1, 2, 3, 4, 5]이고, B는 [2.5, 4]이다.
  • index는 0부터 시작하니 2.5는 A에서 index=2위치에 삽입될 수 있다. (sort상태를 유지하고 삽입한다.)
  • 4의 경우, 동일한 값이 index=3 에 위치한다. left가 기본이므로 3이 반환된다.

다음과 같이 right를 인자로 줄 경우,

print(np.searchsorted(list_a, list_b, side='right'))

결과는 다음과 같다.

[2 4]

sort된 ndarray A를 가정하기 때문에, 정렬이 안된 A를 사용할 경우엔 제대로 된 반환값을 보장하지 않는다.
만일 정렬을 하지 않고 입력하려면, parameter sorter에 A 를 sorting하기 위한 index list를 넣어주면 된다.

import numpy as np

list_a = [8, 2, 3, 4, 5]
list_b = [2.5, 4]

print(np.searchsorted(list_a, list_b, sorter=np.argsort(list_a)))

결과는 다음과 같다.

[1 2]

pytorch에서도 torch.searchsorted로 제공된다.


같이 보면 좋은 자료들

https://ds31x.tistory.com/344

 

[Summary] NumPy(Numerical Python)

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

ds31x.tistory.com

 

'Programming' 카테고리의 다른 글

[ML] Levenshtein distance  (1) 2023.05.17
[Python] argparse 사용하기.  (0) 2023.04.05
[Basic] Literal  (0) 2023.02.20
[Programming] Primitive Data Type : C, C++, NumPy, Torch  (0) 2023.02.01
[PyQt] Event and Event Handling 작동방식  (0) 2023.01.26
'Programming' 카테고리의 다른 글
  • [ML] Levenshtein distance
  • [Python] argparse 사용하기.
  • [Basic] Literal
  • [Programming] Primitive Data Type : C, C++, NumPy, Torch
dsaint31x
dsaint31x
    반응형
    250x250
  • dsaint31x
    Dsaint31's blog
    dsaint31x
  • 전체
    오늘
    어제
    • 분류 전체보기 (740)
      • Private Life (13)
      • Programming (186)
        • DIP (104)
        • ML (26)
      • Computer (119)
        • CE (53)
        • ETC (33)
        • CUDA (3)
        • Blog, Markdown, Latex (4)
        • Linux (9)
      • ... (351)
        • Signals and Systems (103)
        • Math (172)
        • 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
    • 기타 방사능관련.
  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바