Intro.
- 지난 시간에 넘파이 배열을 만들었다면, 이번엔 그 배열을 요리조리 재구성해보자.

1. 넘파이 배열의 정렬
- 넘파이 배열 속 원소를 정렬하는 방법이 여러가지 있는데, 주로 sort와 argsort를 많이 사용함.
axis=-1
이 기본값으로 설정되어 있어 마지막 축을 기준으로 함.
① np.sort()
- 가장 기본적인 정렬 방법.

- 역순 정렬은 따로 제공하지 않는데, 슬라이싱으로 직접 해볼 수 있음.

- 2차원 이상의 배열에 대해서도 둘 다 가능함.

- 원하는 축을 기준으로 정렬할 수도 있음.

② np.argsort()
- 똑같은 정렬이긴 한데, 이건 인덱스 값으로 반환해줌.

- 역시 역순 정렬이나 기준 축 변경도 가능함.

③ np.lexsort()
- key값을 기준으로 정렬하는 방법 (원하는 key값을 기준으로 정렬하고, 이것도 argsort처럼 인덱스로 반환하는 듯)
④ np.searchsorted()
- 정렬된 배열에서 원하는 요소를 찾는 방법 (
side
로 돌아가는 방향 설정할 수 있는 것까진 알겠는데, 여러 개 지정하는 건 잘 모르겠음..)

⑤ np.partition()
- 부분적으로 정렬하는 방법 (특정 값으로 구역을 나누는 건 알겠는데, 용도를 잘 모르겠음.)

2. 넘파이 배열의 병합
① np.concatenate()
- 두 개 이상의 배열을 연결하는 방법

- 2차원 이상의 배열도 가능하고(❗연결하는 축은 크기가 맞아야 함❗) ,
기준 축 변경도 가능함.

3. 넘파이 배열의 크기
① .ndim()
- 넘파이 배열의 차원을 파악할 땐, 제일 끝에 있는 대괄호 개수를 세어보면 쉽게 알 수 있음.

② .size()
- 넘파이 배열의 size는 그 속의 element 개수와 동일함.

③ .shape()
- 넘파이 배열의 형태가 궁금하면 shape를 보면 됨.

.reshape()
를 사용하여 형태를 바꿀 수도 있음.
➕객체에 바로 안 붙이고 np.reshape()
로 따로 명령해줄 수도 있음.

4. 넘파이 배열의 확장
① np.newaxis
- 넘파이 배열에 축을 추가하여 배열을 확장시킬 수 있음.

- 확장 방향은 [행, 열] 자리라고 생각하고 입력하면 됨
(아래 예시는 둘 다 2차원으로 확장된 건데, 그 방향이 다름!)

② np.expand_dims()
- 넘파이 배열 객체와 축을 전달하여, 배열을 확장시켜주는 함수.

🤔 Hmmmm...
.shape()
의 결과값을 볼 때, 3차원 이상으로 가면 어떻게 되는지 감이 잘 안 잡힌다. 추상적으로 생각할 수 있는 범주를 넘어서는 4차원 이상을 어떻게 해석하는지 찾아봐야겠다...
배열 확장도 2차원 이상으로 가니까 감이 잘 안 잡힌다.. 해결해야한다..

🤓 To wrap up...
- 정렬, 병합, 크기, 확장 ...(추후 수정)