인공지능 공부

인공지능 2차시

NaZZU 2025. 3. 18. 15:52

Numpy

  • 고성능의 수치 계산을 위한 라이브러리
  • 넘파이 라이브러리는 다차원 데이터 구조가 포함되어있다.
  • 넘파이는 데이터 전처리 및 다양한 수학적인 행렬 연산을 수행하는데 사용할 수 있다.
  • import numpy as np

 

딥러닝에서 넘파이가 중요한 이유

  • 학습 데이터는 2차원 행렬이나 3차원 행렬에 저장된다.

 

import numpy as np
a = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])

print(a.shape) # 배열의 형상
(3, 3)

print(a.ndim) # 배열의 차원 개수 
2

print(a.dtype) # 요소의 자료형
int64

print(a.itemsize) # 요소 한 개의 크기
8

print(a.size) # 전체 요소의 개수
9

np.zeros( (3, 4) ) # 내용을 0으로 3행 4열의 2차원 배열 생성
 array([[ 0.,  0.,  0.,  0.],
 [ 0.,  0.,  0.,  0.],
 [ 0.,  0.,  0.,  0.]])

np.ones( (3, 4) ) # 내용을 1로 3행 4열의 배열 생성
array([[1, 1, 1, 1],
 [1, 1, 1, 1],
 [1, 1, 1, 1]])

np.eyes(3) # 대각선 3열 3행의 3차원 배열 생성 후, 주대각선의 값만 1로, 나머지는 0으로 지정.
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])


np.arange(5) # 0부터 시작하여 5 이전까지의 값을 가지는 1차원 배열 생성
 array([0, 1, 2, 3, 4])
 
 np.arange(1, 6)
 array([1, 2, 3, 4, 5])
 
 np.arange(1, 10, 2) # 1부터 10 이전까지 값을 2씩 증가시키며 값을 채워넣음
 array([1, 3, 5, 7, 9])
 
 x = np.array([[1, 2], [3, 4]])
 y = np.array([[5, 6], [7, 8]])
 
 np.concatenate((x, y), axis=1)  # 두 배열끼리 차수가 맞는 배열만 합침
 array([1, 2, 5, 6],[3, 4, 7, 8])

 

예제

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

print("문제 1 : ", a[1][2])  # 6
print("\n문제 2 : ", a.shape)  # (3, 3)
print("\n문제 3 : ", a.size)   # 9

print("\n문제 4 : \n", np.zeros((4, 2)))  # array([[0., 0.], [0., 0.], [0., 0.], [0., 0.]])

print("\n문제 5 : \n", np.arange(3, 12, 2))  # array([3, 5, 7, 9, 11])

x = np.array([[1, 2, 3], [4, 5, 6]])
y = np.array([[7, 8, 9], [10, 11, 12]])
print("\n문제 6 : \n", np.concatenate((x, y), axis=1))  # array([[1, 2, 3, 7, 8, 9], [4, 5, 6, 10, 11, 12]])
print("\n문제 7 : \n", np.concatenate((x, y), axis=0))  # array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])
print("\n문제 8 : \n", np.vstack((x, y)))               # array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])

a = np.arange(10)
print("\n문제 9 : \n", a.reshape(5, 2))  # array([[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]])
print("\n문제 10 : \n", a.reshape(2, -1)) # array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]])

a = np.array([1, 2, 3, 4, 5, 6, 7, 8])
print("\n문제 11 : ", a.shape) 

a1 = a[np.newaxis, :]
print("\n문제 12 : \n", a1)       # array([[1, 2, 3, 4, 5, 6, 7, 8]])
print("\n문제 13 : ", a1.shape)   # (1, 8)

a2 = a[:, np.newaxis]
print("\n문제 14 : \n", a2)       # array([[1], [2], [3], [4], [5], [6], [7], [8]])
print("\n문제 15 : ", a2.shape)   # (8, 1)