[AIVLE SCHOOL] 데이터 다듬기(1) - Numpy

춤추는 머쉬룸·2024년 9월 12일

AIVLE SCHOOL 6기

목록 보기
15/80
post-thumbnail

9/12 2, 3, 4, 5세션

A. Numpy

  • 배열(Array)을 쓸 수 있다
  • c언어로 개발되었다
  • import numpy as np
  • np.array(리스트)

A-1. 왜 배열을 쓰는가?

  • 리스트는 곱하면 같은 요소들이 두 번 반복된다
  • 배열은 곱하면 각각의 요소들에 곱해진다
  • 배열을 하나의 자료형만 가질 수 있다
  • 만약 다른 자료형이 들어오는 경우, 가장 큰 자료형으로 모두 바뀐다
# 배열
> a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])

# 확인
> print(a)

# 2 곱하기
> a *= 2

# 확인
> print(a)

[1 2 3 4 5 6 7 8 9]
[ 2  4  6  8 10 12 14 16 18]

# 짝수만 표시 - []안에 조건 넣기
> print(a[a % 2 == 0])
[2 4 6 8]

A-2. 용어 정리

  • axis : 축
  • axis 0-행(세로), axis 1-열(가로)
  • rank : 축의 개수
  • shape: 축의 길이, 배열의 크기

3 x 4 배열의 경우

  • axis0, axis1 을 갖는 2차원 배열
  • rank는 2
  • shape는 (3, 4)

B. 배열 만들기

  • np.array() 함수를 사용해서 배열을 만듬
  • 대부분 리스트로부터 배열을 만들거나, 머신러닝 관련 함수 결괏값이 배열이 된다
  • 1차원 배열 : 벡터
  • 2차원 배열 : 행렬
> a2 = [[1.5, 2.5, 3.2],
      [4.2, 5.7, 6.4]]

# 배열로 변환
> b2 = np.array(a2)

# 확인
> print(b2)

[[1.5 2.5 3.2]
 [4.2 5.7 6.4]]

B-1. 3차원 배열

  • axis0 : 겹쳐진 개수
  • axis1 : 행
  • axis2 : 열
  • shape 가 (2, 3, 3,) -> 3x3 배열이 2개 겹쳐있다

B-2. 배열정보 확인

  • 함수x, 메서드x, 속성이다!! ()붙이지 않는다.
  • 메서드는 동작을 하는 것이지만, 정보는 속성이다.

B-2-1) 차원 확인 (number of demend)

  • 배열.ndim

B-2-2) 형태(크키 확인)

  • 배열.shape
  • 튜플의 형태로 반환

B-2-3) 자료형 확인

  • 배열.dtype

C. Reshape

  • 배열에 포함된 요소가 사라지지 않는 형태라면 자유롭게 변환 가능
  • (3, 2) → (2, 3) → (1, 6) → (6, 1) 등등
# (2, 3) 형태의 2차원 배열 만들기
a = np.array([[1, 2, 3],
              [4, 5, 6]])

# 2차원 배열로
# 메소드 사용
b = a.reshape(3, 2)

# 함수 사용
b = np.reshape(a, (3, 2))

# 1차원 배열로
c = a.reshape(6, )

C-1. np.reshape() 함수

  • b = np.reshape(a, (3, 2))
  • 리스트, 튜플 등 array 가 아닌 다른 자료형도 변환 가능!
[[1 2]
 [3 4]
 [5 6]]

C-1-1) 포트란 방식

  • b = np.reshape(a, (3, 2))
[[1 5]
 [4 3]
 [2 6]]

C-2. -1 사용

  • (m, -1) 또는 (-1, n) 처럼 사용해 행 또는 열 크기 한 쪽만 지정하면 자동으로 계산됨

D. 배열 인덱싱과 슬라이싱 & 조회

D-1. 요소 조회

# 첫 번째 행, 두 번째 열 요소 조회
> print(a[0, 1])

D-2. 행 조회

# 첫 번째, 두 번째 행 조회
> print(a[[0, 1], :]) -> :(모두 가져오기)는 생략 가능
> print(a[[0, 1]])

D-3. 열 조회

# 첫 번째, 두 번째 열 조회
print(a[:, [0, 1]])

D-4 조건 조회

  • 배열[조건] 형태로 해당 조건에 맞는 요소만 조회
  • 조건을 변수로 지정해서 배열[조건변수명] 형태로 넣을 수 있음
# 요소 중에서 90 이상인 것만 조회
print(score[score >= 90])

E. 배열 연산

  • 리스트는 할 줄 몰라요
  • 더하기 : np.add(x, y)
  • 빼기 : np.substract(x, y)
  • 곱하기 : np.multiply(x, y)
  • 나누기 : np.divide(x, y)
  • 제곱 : np.power(x, y)
  • 행렬의 곱 : x.dot(y)

0개의 댓글