Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 a.sort, sorted(a), np_argsort(a) 및 np.lexsort(b, a)


특정 순서로 데이터 요소를 정렬하는 것은 자주 필요한 작업입니다. 배열의 요소를 정렬하기 위해 파이썬은 sorted() 및 array.sort()라는 함수를 사용합니다.

정렬(배열)

이 함수는 원래 배열을 수정하지 않고 정렬된 배열을 반환합니다.

a =[9,5,3,1,12,6]b =sorted([9,5,3,1,12,6])print "정렬된 배열:\n",print(b)print "원래 배열:\n",print(a)

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

정렬된 배열:[1, 3, 5, 6, 9, 12]원래 배열:[9, 5, 3, 1, 12, 6]

목록.정렬()

sort 함수는 제공된 배열을 제자리에서 수정하여 정렬된 배열을 반환합니다. 따라서 원본 배열은 아래 예와 같이 수정됩니다.

a =[9,5,3,1,12,6]print "Original Array :\n",print (a)print "Sorted Array :\n",a.sort()print (a) 

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

원래 배열:[9, 5, 3, 1, 12, 6]정렬 배열:[1, 3, 5, 6, 9, 12]

따라서 sorted() 함수는 원본 배열의 복사본을 만든 다음 수정하므로 sort()보다 느립니다.

더 복잡한 정렬 요구 사항은 Numpy를 사용하여 수행됩니다. Numpy는 많은 고급 기능을 제공하기 때문에 과학 데이터 처리에 광범위하게 사용되는 파이썬 라이브러리입니다. 아래 예에서 순수한 파이썬 정렬 방법과 Numpy 정렬 방법을 모두 볼 수 있습니다.

numpy.argsort

numpy의 이 함수는 배열 요소 대신 정렬된 배열의 인덱스를 반환합니다. 아래 예에서 우리는 배열을 취하고 각 요소에 대한 인덱스와 함께 요소를 인쇄합니다. 그런 다음 결과로 정렬된 배열의 인덱스를 제공하는 argsort 함수를 적용하고 결과도 배열입니다.

numpy를 npx로 가져오기 =np.array([9,5,3,1,12,6])print(x)#범위 내에서 요소의 위치를 ​​인쇄합니다(len(x)):print "[" ,i,"]",x[i],print "\n"# 정렬된 요소의 인덱스를 인쇄합니다 =np.argsort(x)print(s)

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

[ 9 5 3 1 12 6][ 0 ] 9 [ 1 ] 5 [ 2 ] 3 [ 3 ] 1 [ 4 ] 12 [ 5 ] 6[3 2 1 5 0 4 ]

numpy.lexsort

이 함수는 둘 이상의 배열을 포함하는 여러 정렬 키를 사용하여 정렬하는 데 사용됩니다. 예를 들어, 먼저 열 A의 데이터를 정렬한 다음 열 B의 값을 정렬합니다. 아래 예에서는 열 A와 열 B를 나타내는 두 개의 배열을 사용합니다. 먼저 열 A를 기준으로 정렬한 다음 열을 기준으로 정렬하기 위해 lexsort() 함수를 적용할 때 B 열 A에 있는 요소의 인덱스를 포함하는 배열로 정렬한 결과를 얻습니다.

import numpy as npcolA =[2,5,1,8,1] # 첫 번째 columncolB =[9,0,3,2,0] # 두 번째 column# ColA를 기준으로 정렬한 다음 colBsorted_index =np.lexsort( (colB,colA))print(sorted_index)#column 값을 쌍으로 보여주는 결과를 인쇄합니다.print [(colA[i],colB[i]) for i in sorted_index]

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

[4 2 0 1 3][(1, 0), (1, 3), (2, 9), (5, 0), (8, 2)]

보시다시피 colA의 가장 낮은 두 값은 인덱스 위치 2와 4에서 1과 1입니다. 그러나 결과는 0과 3인 열 B의 각 값도 첫 번째로 정렬되기 때문에 오름차순으로 4와 2를 보여줍니다. 0 다음 3, 결과를 4와 2로 만듭니다.