이번주는 드디어 파이썬을 가지고 데이터 분석을 하는 것을 배웠다. 매번 강의를 통해 배우지만, 이론상으론 이해해도 막상 쓸려고하면 막히는 부분이 있다. 강사님께서 이런 부분은 수없이 코딩을 해보는 수밖에 없다고 하셨다. 그래도 예전 행력을 배우면서 손수 계산하는 것을 이제는 코딩으로 그것을 간단하게나마 구현해가는게 재밌었다. 문제풀이시간을 통해 Jupyter NoteBook을 써보았는데, 셀형식으로 돌아가는 것이 신기했다.
행렬이나 일반적으로 대규모 다차원 배열을 쉽게 처리 할 수 있도록 지원하는 파이썬의 라이브러리이다.
import numpy as np # numpy 패키지 로드하여 np로 사용
a = [[1,2,3], [4,5,6]] # 리스트에서 행렬생성
b = np.array(a)
print(b)
[[1 2 3] #결과값
[4 5 6]]
# 배열의 열수(차원)
print(b.ndim) # 2
# 배열의 차원
print(b.shape) # (2, 3)
# 배열의 원소 접근
print(b[0,0]) # 1
# 1씩 증가하는 1차원 배열(시작이 0부터)
print(np.arange(10)) # [0 1 2 3 4 5 6 7 8 9]
# 1씩 증가하는 1차원 배열(시작이 5부터)
print(np.arange(5, 10)) # [5 6 7 8 9]
# 영행렬 생성
print(np.zeros((2,2))) # [[0. 0.]
[0. 0.]]
# 유닛행렬
print(np.ones((2,3))) # [[1. 1. 1.]
[1. 1. 1.]]
# 모든 원소가 5인 2*3행렬
print(np.full((2,3), 5)) # [[5 5 5]
[5 5 5]
# 단위행렬
print(np.eye(3)) # [[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
a = np.arange(20)
print(a)
a는 [0, 1, 2, 3..., 19]를 가지는 리스트가 있다. reshape(행, 열)을 쓰면 배열이 변환한다. 아래를 보자.
b=a.reshape((4,5))
print(b)
#결과값
#[[ 0 1 2 3 4]
# [ 5 6 7 8 9]
# [10 11 12 13 14]
# [15 16 17 18 19]]
파이썬 기초를 배울때 리스트를 슬라이싱하는방법을 배웠는데, 행렬도 슬라이싱 방법은 같다. (열[슬라이싱 범위], 행[슬라이싱 범위])만 기억해두면 좋을 것이다. 밑에 그림을 보면 이해가 쉬울 것이다.
특징
import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
# 각 요소 더하기
c = a+b # [5 7 9]
# 각 요소 빼기
c = a-b # [-3 -3 -3]
# 각 요소 곱하기
# c = a*b #[4 10 18]
# 각 요소 나누기
# c = a/b # [0.25 0.4 0.5]
import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
# c= np.add(a, b)
print(c) # [5 7 9]
# c= np.substract(a, b)
print(c) # [-3 -3 -3]
c = np.multiply(a, b)
print(c) #[4 10 18]
c = np.divide(a,b)
print(c) # [0.25 0.4 0.5]
dot()함수: 행렬의 곱 -> 첫째 행렬의 열 갯수와 둘째 행렬의 행 갯수가 동일해야한다!!
import numpy as np
arr1 = [[1,2],[3,4]]
arr2 = [[5,6],[7,8]]
a = np.array(arr1)
b = np.array(arr2)
c= np.dot(a, b)
print(c)
#결과값
[[19 22]
[43 50]]
모든 원소의 합: sum(), 모든 원소의 곱: prod()
import numpy as np
a = np.array([[-1,2,3],[3,4,8]])
s = np.sum(a)
print('sum=',a.sum()) #sum= 19
# 행별/열별 연산 (axis=0/1)
#axis=0은 행끼리 더하라는 뜻
print('sum by row=',a.sum(axis=0)) #sum by row= [ 2 6 11]
#원소 평균구하기
print('mean=',a.mean()) #mean= 3.1666666666666665
#표준편차 구하기
print('sd=',a.std()) #sd= 2.6718699236469
#모든 원소의 곱
print('product=',a.prod()) #product= -576
https://ko.wikipedia.org/wiki/%ED%96%89%EB%A0%AC_%EA%B3%B1%EC%85%88 - 행렬의 곱
http://bigdata.dongguk.ac.kr/lectures/Python/_book/numpy.html - 파이썬 기초/4장 Numpy