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...

  • 정렬, 병합, 크기, 확장 ...(추후 수정)
profile
생각은 그만

0개의 댓글