Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python – 행 중앙값을 기준으로 행렬 정렬하기

각 행의 중앙값(median)을 기준으로 행렬(리스트의 리스트)을 정렬해야 하는 경우가 있습니다. Python에서는 statistics 모듈이 제공하는 median() 메서드를 활용해 정렬 기준 함수를 정의한 뒤, sort() 메서드의 key 인자로 지정하면 간단하게 해결할 수 있습니다.

아래는 그 구현 예시입니다.

예제 코드

from statistics import median

def median_row(row):
    return median(row)

my_list = [[43, 14, 27], [13, 27, 24], [32, 56, 18], [34, 62, 55]]

print("원본 리스트 :")
print(my_list)

my_list.sort(key=median_row)

print("정렬 결과 :")
print(my_list)

실행 결과

원본 리스트 :
[[43, 14, 27], [13, 27, 24], [32, 56, 18], [34, 62, 55]]
정렬 결과 :
[[13, 27, 24], [43, 14, 27], [32, 56, 18], [34, 62, 55]]

코드 설명

  • statistics 모듈에서 median 함수를 임포트하여 환경에 불러옵니다.

  • median_row라는 이름의 함수를 정의합니다. 이 함수는 하나의 행(row)을 매개변수로 받아, median() 메서드를 사용해 해당 행의 중앙값을 반환합니다.

  • 리스트 안에 리스트가 포함된 형태(행렬)의 데이터를 정의하고 콘솔에 출력합니다.

  • sort() 메서드를 호출할 때 key 인자로 앞서 정의한 median_row 함수를 지정합니다. 이렇게 하면 각 행의 중앙값을 기준으로 오름차순 정렬이 수행됩니다.

  • 정렬된 최종 결과가 콘솔에 출력됩니다.

참고 사항

  • 중앙값은 데이터를 크기 순으로 나열했을 때 가운데 위치하는 값입니다. 요소 개수가 짝수인 경우에는 가운데 두 값의 평균이 반환됩니다.

  • 내림차순으로 정렬하고 싶다면 my_list.sort(key=median_row, reverse=True)처럼 reverse=True 옵션을 추가하면 됩니다.

  • 원본 리스트를 변경하지 않고 새로운 정렬 리스트를 얻고 싶다면 sorted(my_list, key=median_row)를 사용할 수도 있습니다.