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