안녕하세요! 제리입니다.
기술 블로그를 쓸 때 어떤 것을 먼저 써야할 지, 내가 지금 하고 있는 것을 먼저 써야할 지
고민이 참 많았습니다.
복습도 할 겸, 자세히 다시 리마인드하는 느낌으로 하나씩 작성해보려고 합니다!
Numpy란?
파이썬에서 배열을 사용하기 위한 표준 패키지, 수치 해석용 패키지
벡터 / 행렬 사용하는 선형대수 계산에 주로 이용
왜 알아야할까?
처음에 저도 사용할 일이 없어서 그렇게 중요하지 않다고 생각했습니다.
numpy보다 이후의 pandas가 데이터 분석에 있어서 더 많이 쓰이고 관련 라이브러리가 많기 때문이죠.
그런데 딥러닝을 배울 때 이 부분이 중요합니다!
그렇기에 처음을 잘 다잡고 가시는 것을 추천합니다~~~
배열 : 같은 타입의 변수들로 이뤄진 유한집합
인덱스 : 배역에서의 위치 나타내는 숫자 (항상 0부터 시작, 양의 정수만 가짐)
행렬 : 수 또는 다항식을 직사각형 모양으로 배열
이 정도면 벌써 반절을 하신 것입니다!
물론 이를 어떻게 코드를 쳐야할지 알아야겠죠?????
# numpy 라이브러리 가져오기
# 주로 np로 줄여서 사용
import numpy as np
# 리스트 생성
>>> my_list = [1,2,3]
>>> my_list
[1, 2, 3]
# 배열로 변환
>>> a = np.array(my_list)
>>> a
array([1, 2, 3])
# 인덱스
>>> a[0] # 0번째부터 시작하므로 처음에 위치한 1을 출력
1
>>> a[-1] # -1 인덱스는 마지막 것을 출력
3
# 행렬 표현
>>> my_matrix = [[1,2,3],[4,5,6],[7,8,9]]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 2차원 행렬로 표현
>>> b = np.array(my_matrix)
>>> b
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# 행렬 인덱스
>>> b[0,0] # 첫 번째 행의 첫번째열 출력
1
>>> b[0,-1] # 첫번째 행의 마지막 열
3
# 배열 슬라이싱 (복수 개를 접근)
>>> b[0,:] # 첫번째 행의 열 전체
array([1, 2, 3])
>>> b[1,1:] # 두번째 행의 두번째 열부터 전체
array([5, 6])
# 크기에 따른, 0인 배열 생성
>>> c = np.zeros(3)
>>> c
array([0., 0., 0.])
# 크기에 따른, 1인 행렬 생성
>>> d = np.ones((3,2))
>>> d
array([[1., 1.],
[1., 1.],
[1., 1.]])
# 크기에 따른, 배열 생성
>>> e = np.empty((2,3))
>>> e
array([[1., 1., 1.],
[1., 1., 1.]])
# 특정 수열 만들 때 사용
>>> np.arange(4)
array([0, 1, 2, 3])
# 배수 형태의 수열도 가능
>>> np.arange(2,10,4)
array([2, 6])
# 선형 구간 지정 구간 수만큼 분할
>>> np.linspace(0,100,5)
array([ 0., 25., 50., 75., 100.])
# 배열 내부 데이터 보존한 채로 형태 변경
>>> a = np.array([0,1,2,3])
>>> b = a.reshape(2,2)
>>> b
array([[0, 1],
[2, 3]])
# 1차원 배열 형태로 변경
>>> b.flatten()
array([0, 1, 2, 3])
>>> aa = np.array([[1,2,3],[4,5,6]])
>>> aa
array([[1, 2, 3],
[4, 5, 6]])
# 행렬의 사칙연산
>>> aa+aa
array([[ 2, 4, 6],
[ 8, 10, 12]])
>>> aa-aa
array([[0, 0, 0],
[0, 0, 0]])
>>> aa*aa
array([[ 1, 4, 9],
[16, 25, 36]])
>>> aa/aa
array([[1., 1., 1.],
[1., 1., 1.]])
>>> bb = aa.reshape(3,2)
>>> bb
array([[1, 2],
[3, 4],
[5, 6]])
# 행렬의 곱 (행렬a의 열과 b의 행 수가 같아야함)
>>> np.dot(aa,bb)
array([[22, 28],
[49, 64]])
무엇보다도 선형대수의 개념이 어느정도 들어가져있기에
코드만 돌리시지 말고 왜 이 결과가 나왔을 지 한번 공부해보는 것도 좋습니다!
특히 행렬의 곱과 슬라이싱은 매우 많이 쓰이기에!!!!!!!!!!!!!
처음부터 제대로 하면 좋습니다~(후회 중)
제가 공부했던 강의에서의 파일입니다! (유데미 강의)
아래 예제 문제 풀어보면서 실력을 키워보는 것은 어떨까요?????
꼭 다 풀어보시고 정답을 보시기 추천드립니다!
'머신러닝' 카테고리의 다른 글
시계열 공부 (1) - 시계열회귀분석 (0) | 2023.06.27 |
---|---|
Statsmodels 이용한 시계열 분석에 대해 (0) | 2023.05.04 |
pandas를 이용한 시계열 데이터 처리에 대해 (0) | 2023.05.03 |
클러스터링(군집화) 알고리즘에 대해 (1) | 2023.05.01 |
Pandas에 대해 (Series, DataFrame) (0) | 2023.04.30 |