반응형
파이썬의 강력한 도구, Numpy
앞서 Pandas에대해 포스팅했었는데요, Numpy가 그 Pandas의 모태가 됩니다. Numpy를 기반으로 확장시킨 것이 Pandas입니다. Numpy는 여러가지 기능을 제공하는 라이브러리입니다. Array, Tensor, Matrix 등의 수치연산에 필수적이며, 내부적으로 C로 구형되어있어 연산이 굉장히 빠릅니다. (파이썬은 구조적으로 C보다 느립니다. 이 부분에 대해선 나중에 자세히 포스팅하겠습니다.)
1. ndarray
import numpy as np
np.array([3,2,1,4], int) #1차원 out>> array([3, 2, 1, 4])
np.array([[3,2],[1,4]]) #2차원 out>> array([[3, 2],
[1, 4]])
넘파이에서 배열을 ndarray라고 부릅니다. 그리고 이런 속성들을 갖고있습니다.
np.array([3,2,4,5,6,1,2,3,4]).shape # tensor out>> (9,)
np.array([[3,2,4],[5,6,1],[2,3,4]]).shape # matrix out>> (3, 3)
np.array([[3,2,4],[5,6,1],[2,3,4]]).ndim # dimension out>> 2
np.array([[3,2,4],[5,6,1],[2,3,4]]).dtype # dtype out>> dtype('int64')
np.array([[3,2,4],[5,6,1],[2,3,4]]).size # 요수갯수 out>> 9
주의할 점은, tensor와 matrix가 개념부터 전혀 다르다는 점입니다. tensor는 컴마뒤에 아무것도 오지 않습니다.
2. Reshape
a = np.array([1,2,3,4,5,6,7,8,9]).reshape(3,3) # out>> array([[1, 2, 3],
# [4, 5, 6],
# [7, 8, 9]])
a.flatten() # out >> array([1, 2, 3, 4, 5, 6, 7, 8, 9])
reshape로 shape를 간단히 지정할 수 있고, flatten으로 펼칠 수도 있습니다.
3. Indexing & Sclicing
a = np.array([1,2,3,4,5,6,7,8,9]).reshape(3,3)
a[0] # out >> array([1, 2, 3])
a[0][0] # out >> 1
a[0,0] # out >> 1
a = np.array([1,2,3,4,5,6,7,8,9]).reshape(3,3)
a[1:] # out >> array([[4, 5, 6],
# [7, 8, 9]])
a[1,1:] # out >> array([5, 6])
a[:,-1] # out >> array([3, 6, 9]) # -1은 역순
4.Creation
np.arrange(30) # 배열 30까지 만들어준다
np.arrange(0,30,2) # 0 부터 30까지 2의간격으로
np.arrange(12).reshape(3,4) # 보통 이런식으로 많이쓴다
np.zeros(shape=(2,2)) # 2,2 0매트릭스
np.zeros(shape=(4,)) # 4 영벡터
np.ones(shape=(2,2)) # 2,2 1매트릭스
np.ones(shape=(4,)) # 4 1벡터
np.empty(shape=(2,2)) # 2,2 빈 매트릭스
np.empty(shape=(4,)) # 4 빈 벡터
np.identity(3) #단위행렬
np.eye(N=3, M=5) # 대각행렬
np.eye(3,5,k=2) # 대각행렬 (k로 위치지정)
np.eye(matrix, k=1) # 대각 행렬의 값을 추출, k로 첫행 위치지정
np.random.uniform(0,1,10).reshape(2,5) # 균등분포
np.random.normal(0,1,10).reshape(2,5) # 정규분포
5.Operation
x = np.arange(1,10).reshape(3,3)
x.sum(axis=0)
x.mean(axis=0)
x.std(axis=0)
np.sqrt(x)
a = np.array([1, 2, 3])
b = np.array([2, 3, 4])
np.vstack((a,b)) # 세로로 붙임
np.hstack((a,b)) # 가로로 붙임
np.concatenate((a,b),axis=0) # concat
a.tolist( ) # list로 반환
6. Comparisons
a = np.arange(10)
a>5 # out >> array([False, False, False, False, False, False, True, True, True, True], dtype=bool)
np.any(a>5) # out >> True
np.all(a>5) # out >> False
a = np.array([2, 4, 1])
b = np.array([6, 3, 2])
a > b # out >> array([False, True, False], dtype=bool)
a == b # out >> array([False, False, False], dtype=bool)
(a>b).any() # out >> True
a = np.array([1, 3, 0])
np.logical_and(a > 0, a < 3) # out >> array([ True, False, False], dtype=bool)
np.logical_not(a<3) # out >> array([False, True, False])
a = np.arange(5)
np.where(a>2) # out >> a = np.arange(10)
a= np.arange(3)
np.argmax(a) # out >> 2
np.argmin(a) # out >> 0
x = np.arange(9).reshape(3,3)
np.argmax(x, axis = 1) # out >> array([2, 2, 2])
np.argmin(x, axis = 1) # out >> array([0, 0, 0])
7. Array operati
x = np.arange(4)
x + x # out >> array([0, 2, 4, 6])
x - x # out >> array([0, 0, 0, 0])
x * x # out >> array([0, 1, 4, 9])
x + 3 # out >> array([3, 4, 5, 6])
x * 3 # out >> array([0, 3, 6, 9])
x / 3 # out >> array([0., 0.33333333, 0.66666667, 1.])
8. Bool & Fancy
A = np.arange(5*5).reshape(5,5)
B = A % 2
B.astype(np.int)
# out >>
array([[0, 1, 0, 1, 0],
[1, 0, 1, 0, 1],
[0, 1, 0, 1, 0],
[1, 0, 1, 0, 1],
[0, 1, 0, 1, 0]])
x = np.array([1,2,3,4,5])
x[x>2] # out
참고자료
반응형
'인공지능 > 데이터' 카테고리의 다른 글
SQL Basic (0) | 2021.03.07 |
---|---|
스케일링을 하는 8가지 방법 (0) | 2021.02.03 |
인코딩을 하는 5가지 방법 (0) | 2021.02.03 |
Data Handling Mindmap (0) | 2021.01.25 |
데이터분석을 위한 라이브러리, Pandas (0) | 2021.01.02 |
댓글