파이썬 두 개의 리스트를 대응 정렬하기

    반응형

    질문

    리스트 A, B가 있을 때

    1. A를 오름차순으로 정렬하고,
    2. B를 A에 대응되는 인덱스로 정렬하기

    답변

    numpy의 argsort 함수를 사용하면 A의 정렬된 인덱스를 반환합니다. 이 인덱스를 가지고 B를 재정렬 하면 되겠습니다.

    import numpy as np
    
    A = [10, 5, 13, 2]
    B = [2, 4, 5, 6]
    
    A_sorted = np.sort(A) # [2, 5, 10, 13]
    A_sorted_index = np.argsort(A) # [3, 1, 0, 2]
    
    print("오름차순 정렬된 A 리스트 : ", A_sorted)
    print("오름차순 정렬된 A 리스트의 인덱스 : ", A_sorted_index)
    
    B_sorted_by_A = [B[i] for i in A_sorted_index] # [6, 4, 2, 5]
    
    print("A에 의해 재정렬된 B : ", B_sorted_by_A)

     

    코드 실행 결과는 아래 Colab에서 확인하실 수 있습니다.

    https://colab.research.google.com/drive/1JNG9Nd-UgKROYXLWj7Yzq_RrveKGVexw?usp=sharing

     

    지식인_20210608_sorted index.ipynb

    Colaboratory notebook

    colab.research.google.com

     

    'QnA' 카테고리의 다른 글

    독불장군 님 / -1073807331 에러  (0) 2022.03.08
    여러개의 엑셀 파일을 불러와야 할 때  (1) 2022.01.25

    댓글

    Designed by JB FACTORY