파이썬으로 진행되는 모든 데이터 분석 및 인공지능 학습에 있어서 필수적으로 이해해야하는 도구
Numerical Python의 약자로, 과학계산에서 많이 사용하는 선형대수의 계산식을 파이썬으로 구현할 수 있도록 도와주는 라이브러리이다.
행렬과 벡터와 같은 Array 연산에 있어서 사실상의 표준이라고 생각하면 된다.
# Array Creation
test_array = np.array([1, 4, 5, 8], float)
# shape : numpy array의 dimension 구성을 반환함
a = [[1, 2, 3], [4, 5, 6], [4, 5, 6]]
np.array(a).shape
# (3,3)
# dtype : numpy array의 데이터 type을 반환함
test_array.dtype
# dtype('float64')
# ndim - number of dimensions
# size - data의 개수
# nbytes - ndarray object의 메모리 크기를 반환함
a = np.array([[1, 2, 3], [4.5, 5, 6]], int)
a[0,0]
a[0][0]
a[:,2:] # 전체 Row의 2열 이상
a[1,1:3] # 1 Row의 1열 ~ 2열
a[1:3] # 1 Row ~ 2 Row의 전체
np.arange(30)
np.arange(0, 5, 0.5)
test_matrix = np.arange(30).reshape(5,6)
np.zeros(test_matrix) # shape이 같고, 모든 값이 0로 채워진 ndarray
np.ones_like(test_matrix) # shape이 같고, 모든 값이 1로 채워진 ndarray
np.empty_like(test_matrix) # shape이 같고 값이 비어있는 empty ndarray를 반환
np.identity(n=3, dtype=np.int8)
'''
array([[1, 0, 0],
[0, 1, 0],
[0, 0, 1]], dtype=int8)
'''
np.eye(3)
np.eye=(3, 5, k=2)
'''
array([[ 0., 0., 1., 0., 0.],
[ 0., 0., 0., 1., 0.],
[ 0., 0., 0., 0., 1.]])
'''
matrix = np.arange(9).reshape(3,3)
np.diag(matrix)
# array([0, 4, 8])
np.random.uniform(0, 1, 10).reshape(2,5) # 균등분포
np.random.normal(0, 1, 10).reshape(2,5) # 정규분포
# vstack 말 그대로 vertical
a = np.array([1, 2, 3])
b = np.array([2, 3, 4])
np.vstack((a,b))
# hstack 말 그대로 horizontal
a = np.array([ [1], [2], [3]])
b = np.array([ [2], [3], [4]])
np.hstack((a,b))
# concatenate : axis를 활용하여 붙이는 방향을 지정할 수도 있음
a = np.array([[1, 2, 3]])
b = np.array([[2, 3, 4]])
np.concatenate( (a,b), axis=0)
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
b = b[np.newaxis, :] # 축을 하나 추가해줌
np.concatenate( (a,b.T) , axis=1)
a = np.arange(10)
# array([0, 1, 2, 3, 44, 5, 6, 7, 8, 9])
np.any(a>5), np.any(a<0)
(True, False) # any -> 하나라도 조건에 만족한다면 True를 반환한다.
np.all(a>5), np.all(a < 10)
(False, True) # all -> 모두가 조건에 만족한다면 True를 반환한다.
# logical_and : AND 조건의 condition
np.logical_and(a > 0, a < 3)
# logical_not : NOT 조건의 condition
np.logical_not(b)
# logical_or : OR 조건의 condition
np.logical_or(b, c)
a
# array([1., 3., 0.])
np.where(a > 2)
# (array([1]),)
np.where(a < 3)[0]
# array([0, 2])
np.where(a < 3, 3, 2) # where(condition, TRUE, FALSE
# array([3, 2, 3])
np.isnan(a)
np.isfinite(a)
# np.NaN, np.Inf
test_array = np.array([1, 4, 0, 2, 3, 8, 9, 7], float)
test_array > 3
test_array[test_array > 3] # 조건이 True index의 element만 추출
a = np.array([2, 4, 6, 8], float)
b = np.array([0, 0, 1, 3, 2, 1], int) # 반드시 integer로 선언해야 한다.
a[b]
# array([ 2., 2., 4., 8., 6., 4.])
a.take(b) # take 함수 : bracket index와 같은 효과이다.