Numpy
주로 행렬/배열 처리 및 연산에 사용한다. <br
import numpy as np #numpy는 기니까 np로 줄여서 사용
a = np.array([0,1,2,3,4,5,6,7,8,9])
b = np.array([0.12 , 0.34, 0.45, 0.66])
c = np.array(['a' , 'b' , 'c'])
print(type(a))"
print(type(a))의 결과는 <class 'numpy.ndarray'>
로 나오는 것을 확인 할 수 있습니다.
Python 리스트
- 여러가지 타입의 원소
- linked List 구현
- 메모리 용량이 크고 속도가 느림
- 벡터화 연산 불가"
NumPy ndarray
- 동일 타입의 원소
- contiguous memory layout
- 메모리 최적화, 계산 속도 향상
- 벡터화 연산 가능"
다차원 행렬 인덱싱 및 슬라이싱
a = np.array([[0, 1, 2], [3, 4, 5]])
a[0,0] # first row , first col
a[0,1] # first row , second col
a[-1,-1] # last row , last col
a = np.array([[0, 1, 2, 3], [4, 5, 6, 7]])
a[0,:] # first row(전체)
a[:,1] # second col (전체)
a[1,1:] # second row의 second col 부터 끝까지
a[:,0:3] #모든 row의 0:3까지 col
a[0:5]행 0 번째 부터 4번째까지
a[:5]행 0 번째 부터 4번째까지
a[5:]4번째 부터 끝까지
numpy.dot
각 원소를 곱한 값들을 더하는 연산 수행
1차원 x 1차원
a = np.array([1, 3, 5])
b = np.array([4, 2, 1])
np.dot(a, b)
# 실행 1x4 + 3x2 + 5x1 = 15
# 결과 : 15
2차원 x 2차원
# 2차원 x 2차원
a = np.array([[A0, A1], [a0, a1]])
b = np.array([[B0, B1], [b0, b1]])
[[A0 x B0 + A1 x b0, A0 x B1 + A1 x b1], [a0 x B0 + a1 x b0, a0 x B1 + a1 x b1]]
a = np.array([[1, 3], [2, 4]])
b = np.array([[1, 6], [3, 0]])
np.dot(a, b)
# 결과
[[1 x 1 + 3 x 3, 1 x 6 + 3 x 0], [2 x 1 + 4 x 3, 2 x 6 + 4 x 0]]
array([[10, 6],
[14, 12]])