KT AIVLE SCHOOL 복습

KT AIVLE DX #2 - 데이터 다듬기(1) 배열

전쏘스 2023. 3. 6. 10:11

 

→ 1, 2, 3 차원배열을 만들 수 있음

→ Reshape 기능을 이용해 배열 형태를 바꿀 수 있음

→ 인덱싱과 슬라이싱으로 원하는 데이터를 조회할 수 있음

→ 배열 사이의 기본적인 연산을 수행할 수 있음

1. 라이브러리 불러오기

  • Numpy 배열을 사용하려면 numpy 라이브러리를 불러와야 함
import numpy as np

2. 배열만들기

1) 용어 정의

 

  • axis : 배열의 각 축
  • rank : 축의 개수
  • shape : 축의 길이, 배열의 크기

 

2) 배열 만들기

  • np.array() 함수를 사용해서 배열을 만든다
  • 대부분 리스트로 부터 만들거나, 머신러닝 관련 함수 결과값이 배열이 됨
# 1차원 리스트
a1 = [1, 2, 3, 4, 5]
b1 = np.array(a1)
print(b1)             # [1 2 3 4 5]

# 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]]

# 3차원 리스트
a3 = [[[1, 3, 1],
       [4, 7, 6],
       [8, 3, 4]],
      [[6, 2, 4],  
       [8, 1, 5],
       [3, 5, 9]]]
b3 = np.array(a3)
print(b3)              # [[[1, 3, 1],
                       #   [4, 7, 6],
                       #   [8, 3, 4]],
                       #  [[6, 2, 4],  
                       #   [8, 1, 5],
                       #   [3, 5, 9]]]

 

3. 배열 정보 확인, 배열 형태 변환

1) 배열 기본 정보 확인

  • ndim : 배열 차원 확인
  • shape : 배열 형태를 확인
  • dtype : 배열에 포함된 요소들의 자료형 확인
b1.ndim
b1.shape
b1.dtype

 

2) Reshape

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

# (3, 2) 형태의 2차원 배열로 Reshape
b = a.reshape(3,2)

# 결과
#[[1 2]
# [3 4]
# [5 6]]
  • (m, -1) , (-1, n) 처럼 사용해서 행 또는 열 크기 한 쪽만 지정 가능
a = np.array([[1, 2, 3], 
              [4, 5, 6]])

# reshape(m, -1) 형태로 지정하여 Reshape 가능
print(a.reshape(1, -1))

# 결과
# [[1 2 3 4 5 6]]

 


4. 배열 인덱싱과 슬라이싱

  • 배열[행, 열] 형태로 특정 위치의 요소를 조회
  • 인덱싱
a = np.array([[1, 2, 3],
              [4, 5, 6], 
              [7, 8, 9]])
# 첫 번째 행, 두 번째 열 요소 조회
print(a[0, 1])

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

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

# 두 번째 행 두 번째 열의 요소 조회
print(a[[1], [1]])              # 결과 [5]

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

  • 슬라이싱
a = np.array([[1, 2, 3],
              [4, 5, 6], 
              [7, 8, 9]])
# 첫 번째 ~ 두 번째 행 조회
print(a[0:2, :])

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

# 두 번째 ~ 끝 행, 두 번째 ~ 끝 열 조회
print(a[1:, 1:])
  • 조건 조회
# 요소 중에서 90 이상인 것만 조회
over = score[score>=90]

 


5. 배열 연산

x = np.array([[1, 2], [3, 4]])
y = np.array([[5, 6], [7, 8]])
# 배열 더하기
print(x + y)

# 또는
print(np.add(x, y))
# 배열 빼기
print(x - y)

# 또는
print(np.subtract(x, y))
# 배열 곱하기
print(x * y)

# 또는
print(np.multiply(x, y))
# 배열 나누기
print(x / y)

# 또는
print(np.divide(x, y))
# 배열 y 제곱
print(x ** y)

# 또는
print(np.power(x, y))