오답노트
[Numpy] 배열의 정렬 본문
sort
sort 함수를 통해 배열을 오름차순 또는 내림차순으로 정렬할 수 있다.
1차원 배열 정렬
sort 함수의 기본은 오름차순이다. 내림차순으로 정렬시 [::-1] 을 붙혀주면 되고, 의미는 처음부터 끝까지 반대 방향으로 보겠다는 의미다.
arr = np.random.randint(10,size=10)
print(arr) # [0 4 9 6 4 9 8 2 2 2]
print(np.sort(arr)) # [0 2 2 2 4 4 6 8 9 9]
print(np.sort(arr)[::-1]) # [9 9 8 6 4 4 2 2 2 0]
2차원 배열 정령
2차원 배열을 정렬 할때, aixs 속성에 따라 행을 기준으로 정렬할지 열을 기준으로 정렬할지 정할 수 있다. 그리고 None으로 주었을 경우 1차원 배열로 정렬된 결과를 반환한다.
arr = np.random.randint(10,size= [3,4])
print(arr)
'''''''
[[4 6 5 1]
[9 1 4 3]
[0 4 5 8]]
'''''''
print(np.sort(arr)) # 기본은 axis = 1
'''''''
[[1 4 5 6]
[1 3 4 9]
[0 4 5 8]]
'''''''
print(np.sort(arr, axis = 0))
'''''''
[[0 1 4 1]
[4 4 5 3]
[9 6 5 8]]
'''''''
print(np.sort(arr, axis = None)) # 2차원 -> 1차원
# [0 1 1 3 4 4 4 5 5 6 8 9]
argsort
argsort는 sort로 정렬이 됐을 때 정렬된 원소의 원래(sort 이전) 위치를 반환한다.
print(arr)
'''''''
[[4 6 5 1]
[9 1 4 3]
[0 4 5 8]]
'''''''
print(np.sort(arr, axis = 1))
'''''''
[[1 4 5 6]
[1 3 4 9]
[0 4 5 8]]
'''''''
print(np.argsort(arr,axis = 1))
'''''''
[[3 0 2 1]
[1 3 2 0]
[0 1 2 3]]
'''''''
위 코드 블럭에서 0번째 행만 살펴보면
sort 이전에는 [4,6,5,1] 이였고 sort 후 [1,4,5,6] 으로 정렬되었다.
이때 각 원소들의 원래 위치는 [3,0,2,1] 이고, 이것은 argsort의 0번째 행과 같다.
아래는 axis가 0일 때이다.
print(arr)
'''''''
[[4 6 5 1]
[9 1 4 3]
[0 4 5 8]]
'''''''
print(np.sort(arr, axis = 0))
'''''''
[[0 1 4 1]
[4 4 5 3]
[9 6 5 8]]
'''''''
print(np.argsort(arr,axis = 0))
'''''''
[[2 1 1 0]
[0 2 0 1]
[1 0 2 2]]
'''''''
0번 째 열은 [4,9,0] 이고 정렬 후에는 [0,4,9] 가 되었다. 정렬전의 위치는 [2,0,1] 이고 이는 argsort의 0번째 열과 같다.
'Python > Numpy' 카테고리의 다른 글
[Numpy] 배열의 전치행렬 (0) | 2022.07.14 |
---|---|
[Numpy] 배열의 형태 변경 (0) | 2022.07.14 |
[Numpy] 배열의 내적 연산 장점 (0) | 2022.07.11 |
[Numpy] 브로드캐스팅(Broadcasting) (0) | 2022.07.11 |
[Numpy] 배열의 비교연산 그리고 삼각함수 (0) | 2022.07.11 |