1) np.sort(변경할ndarray)
정렬된 값을 리턴한다. 기존 ndarray는 변환하지 않는다. 기존의 값을 그대로 유지해야하면 사용한다.
소스 코드
ndarray1 = np.array([3, 2, 5, 1, 4])
print(ndarray1)
sort1 = np.sort(ndarray1)
print('sort1 반환값:', sort1)
print('sort1 원본값:', ndarray1)
결과
[3 2 5 1 4]
sort1 반환값: [1 2 3 4 5]
sort1 원본값: [3 2 5 1 4]
2) 변경할ndarray.sort()
반환값이 없다. 원본 ndarray 값을 변경시킨다. 기존 값을 변경하기 때문에 기존 ndarray 값이 필요 없을 때 사용
소스 코드
ndarray1 = np.array([3, 2, 5, 1, 4])
print(ndarray1)
sort2 = ndarray1.sort()
print('sort2 반환값:', sort2)
print('sort2 원본값:', ndarray1)
결과
[3 2 5 1 4]
sort2 반환값: None
sort2 원본값: [1 2 3 4 5]
3) 내림차순
np.sort는 디폴트로 오름차순으로 행렬 내 원소를 정렬한다.
그래서, 내림차순으로 정렬하기 위해서는 [::-1] 를 적용해야합니다.
소스 코드
sort1 = np.sort(ndarray1)[::-1]
print('sort1 반환값:', sort1)
결과
sort1 반환값: [5 4 3 2 1]
4) 2차원 배열 sort
numpy에서는 2차원 배열의 sort를 axis 축의 방향으로 할수있다.
소스 코드
ndarray2d = np.array(
[[6, 4, 9],
[7, 2, 3],
[5, 8, 1]])
sort2d0 = np.sort(ndarray2d, axis=0)
sort2d1 = np.sort(ndarray2d, axis=1)
print('axis=0 : \n', sort2d0)
print('axis=1 : \n', sort2d1)
결과
axis=0 :
[[5 2 1]
[6 4 3]
[7 8 9]]
axis=1 :
[[4 6 9]
[2 3 7]
[1 5 8]]
axis = 0 이라고 하면, ↓이 방향으로 sort 됩니다.
axis = 1 이라고 하면, → 방향으로 sort 됩니다.
axis가 아직 헷갈리는 분은 오른쪽 링크 클릭 ([Numpy] ndarray 의 axis 축 개념 및 소스 코드 예제)
5) argsort()
원본 행렬을 sorting 하고 원래 인덱스의 값을 반환합니다.
소스 코드
ndarray1 = np.array([3, 2, 5, 1, 4])
print('기존:', ndarray1)
print('소팅:', np.sort(ndarray1))
argsort1 = np.argsort(ndarray1)
print('소팅 인덱스:', argsort1)
결과
기존: [3 2 5 1 4]
소팅: [1 2 3 4 5]
소팅 인덱스: [3 1 0 4 2]
이렇게 인덱스 값을 따로 받을 수 있게되면, 키- 값 으로 묶음으로 사용할 수 있습니다.
위 소스코드에서 조그만 내용을 더 추가해보겠습니다.
argsort1 은 소팅된 인덱스 기존 값을 반환합니다. 반환 타입은 np.ndarray 입니다.
해당 값을 ndarray의 []대괄호에 넣게되면, 텍스트도 숫자가 소팅된 순서대로 소팅되는 것을 확인할 수 있습니다.
소스 코드
ndarray1 = np.array([3, 2, 5, 1, 4])
print('기존:', ndarray1)
print('소팅:', np.sort(ndarray1))
argsort1 = np.argsort(ndarray1)
print('소팅 인덱스:', argsort1)
ndarray2 = np.array(["A", "B", "C", "D", "E"])
print('텍스트 기존:', ndarray2)
print('텍스트 소팅:', ndarray2[argsort1])
결과
기존: [3 2 5 1 4]
소팅: [1 2 3 4 5]
소팅 인덱스: [3 1 0 4 2]
텍스트 기존: ['A' 'B' 'C' 'D' 'E']
텍스트 소팅: ['D' 'B' 'A' 'E' 'C']
'머신러닝 > 넘파이' 카테고리의 다른 글
[Numpy] 행렬 내적, 전치행렬 - dot(), transpose() (1) | 2021.08.24 |
---|---|
[Numpy] ndarray 인덱싱(Indexing) 종류와 사용방법(3) - 불린(Boolean) 인덱싱 (0) | 2021.08.23 |
[Numpy] 리스트 ndarray 변환 함수 - tolist(), np.array() (0) | 2021.08.23 |
[Numpy] ndarray 인덱싱(Indexing) 종류와 사용방법(2) - 팬시 인덱싱 (0) | 2021.08.23 |
[Numpy] ndarray 인덱싱(Indexing) 종류와 사용방법(1) - 단일 값 추출, 슬라이싱 (0) | 2021.08.22 |