※ Numpy를 사용하는 이유
인공지능 활용시 행렬을 사용하는데 행렬에서 필요한 데이터를 추출하는 등 조작을 하기 위해서 사용함
실습 환경 구축
https://colab.research.google.com/?hl=ko
Google Colaboratory
colab.research.google.com
로그인을 하면 사용 가능함
또는
Jupyter notebook 이용
1. 설치
pip install notebook
2. 실행(cmd)
jupyter notebook
Numpy import하기
import numpy as np
np.array(값) : 값을 배열로 만들어줌
※ list vs array
list : 동적크기, 데이터타입 자유, 느림
array : 정적크기, 한가지 데이터타입, 빠름
arr = np.array(range(8))
print('arr는?' , arr)
print('arr[3]는? ', arr[3]) #list처럼 []을 이용해서 접근가능
arr는? [0 1 2 3 4 5 6 7] arr[3]는? 3
영행렬 : np.zeros((행,열))
단위행렬 : np.eye(n) [n x n 단위행렬임]
zero_matrix = np.zeros((2,3))
unit_matrix = np.eye(3)
print('영행렬\n',zero_matrix)
print('')
print('단위행렬\n',unit_matrix)
영행렬 [[0. 0. 0.] [0. 0. 0.]] 단위행렬 [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]]
np.arange(시작, 종료, 간격) : 연속되는 값을 배열로 만들어줌
시작은 포함하나 종료는 종료-1 까지
#range 함수와 동일함
arr_1 = np.arange(6)
arr_2 = np.arange(2, 8)
arr_3 = np.arange(1, 13, 3)
print('arr_1는? ', arr_1)
print('arr_2는? ', arr_2)
print('arr_3는? ', arr_3)
arr_1는? [0 1 2 3 4 5] arr_2는? [2 3 4 5 6 7] arr_3는? [ 1 4 7 10]
np.linspace(시작, 종료, n개) : 시작부터 끝가지를 n개의 데이터로 균일하게 나눔(n등분 아님 n개임!)
시작, 끝 모두 포함함
※ np.linspace(a,b,n) : 공차 (b-a)/(n-1)
arr_lin = np.linspace(1,100,5) #5등분이 아니라 5개를 만드는 것임
print('1부터 100까지 5개로 등분한 배열은?', arr_lin) #24.75씩 증가함
1부터 100까지 5개로 등분한 배열은? [ 1. 25.75 50.5 75.25 100. ]
np.concatenate((x,y), axis=0) : 행렬 합치기
axis=0 : 행
axis=1 : 열
x = np.zeros((2,2))
y = np.eye(2)
con_row = np.concatenate((x,y), axis=0)
con_col = np.concatenate((x,y), axis=1)
print('행으로 합치기\n', con_row)
print('')
print('열으로 합치기\n', con_col)
행으로 합치기 [[0. 0.] [0. 0.] [1. 0.] [0. 1.]] 열으로 합치기 [[0. 0. 1. 0.] [0. 0. 0. 1.]]
배열.reshape(행, 열) : 차원을 변경해줌
old_arr = np.arange(12)
new_arr = old_arr.reshape(3,4)
print('new_arr는?\n', new_arr)
new_arr는? [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]]
행렬연산
A + B : 같은 성분의 합
A - B : 같은 성분의 차
A * B : 같은 성분의 곱
A @ B : 행렬곱(내적)
A = np.array([1,2,3,4]).reshape(2,2)
B = np.array([5,6,7,8]).reshape(2,2)
print('A+B', A+B)
print('A-B', A-B)
print('A*B', A*B)
print('A@B', A@B)
A+B [[ 6 8] [10 12]] A-B [[-4 -4] [-4 -4]] A*B [[ 5 12] [21 32]] A@B [[19 22] [43 50]]
np.random.rand(n) : 0.0에서 1.1 사이의 값 n개 생성
np,random.normal(평균, 표준편차, n) : 정규분포 데이터 n개 생성
a = np.random.normal(0,0.1,10)
print(a)
[ 0.10628313 -0.03399761 -0.06571009 0.23288657 0.0351666 -0.03136179 -0.04665172 -0.10657779 0.01400179 -0.00626739]
'전자공학 > 인공지능' 카테고리의 다른 글
퍼셉트론 (0) | 2022.05.26 |
---|---|
선형회귀와 경사하강법 (0) | 2022.05.15 |
[Matplotlib] 사용법 (0) | 2022.05.02 |
인공지능 소개 (0) | 2022.05.02 |
댓글