Python 데이터 분석 및 인공지능 학습에 필수적인 라이브러리 Numpy
파이썬으로 진행되는 모든 데이터 분석 및 인공지능 학습에 있어서 필수적으로 이해해야하는 도구
Numerical Python의 약자로, 과학계산에서 많이 사용하는 선형대수의 계산식을 파이썬으로 구현할 수 있도록 도와주는 라이브러리이다.
행렬과 벡터와 같은 Array 연산에 있어서 사실상의 표준이라고 생각하면 된다.
넘파이의 특징
- 일반 List에 비해 빠르고, 메모리 효율적
- 반복문 없이 데이터 배열에 대한 처리를 지원함
- 선형대수와 관련된 다양한 기능을 제공함
- C, C++, 포트란 등의 언어와 통합 가능함
array creation
# 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의 메모리 크기를 반환함
- np.array 함수를 활용하여 배열을 생성한다
(ndarray 객체) - 하나의 데이터 type만 배열에 넣을 수 있음
- dynamic typing이 지원되지 않는다.
Handling Shape
reshape
🎶 Array의 shape의 크기를 변경함, element의 갯수는 동일하다- -1 : element의 갯수는 동일하기에, -1을 사용하면 size를 기반으로 자동으로 개수를 선정해준다.
flatten
🎶 flatten : 다차원 array를 1차원 array로 변환해준다.indexing for numpy array
- list와 달리 이차원 배열에서 [0,0] 표기법을 제공한다
- 따라서 list와 달리 행과 열 부분을 나눠서 slicing이 가능하다
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의 전체
Creation function
arange
🎶 array의 범위를 지정하여, 값의 list를 생성하는 명령어- 기본적으로 range를 떠올려서 사용하면 된다.
- floating point도 사용 가능하다
np.arange(30)
np.arange(0, 5, 0.5)
zeros
🎶 0으로 가득찬 ndarray 생성ones
🎶 1으로 가득찬 ndarray 생성empty
🎶 shape만 주어지고 비어있는 ndarray를 생성한다. (memory initialization이 되지 않는다!) 주소만을 제공하고 미리 설정하는 것이기에, 이미 다른 값이 있는 경우도 있으니 참고하자!something_like
🎶 기존 ndarray의 shape 크기만큼 1, 0 또는 empty array를 반환한다.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를 반환
identity
🎶 단위 행렬(i 행렬)을 생성함np.identity(n=3, dtype=np.int8)
'''
array([[1, 0, 0],
[0, 1, 0],
[0, 0, 1]], dtype=int8)
'''
eye
🎶 대각선이 1인 행렬, k값의 시작 index의 변경이 가능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.]])
'''
diag
🎶 대각 행렬의 값을 추출한다. k keyword를 통해 시작하는 index를 지정할 수도 있다.matrix = np.arange(9).reshape(3,3)
np.diag(matrix)
# array([0, 4, 8])
random sampling
🎶 데이터 분포에 따른 sampling으로 array를 생성한다np.random.uniform(0, 1, 10).reshape(2,5) # 균등분포
np.random.normal(0, 1, 10).reshape(2,5) # 정규분포
Operation functions
sum
🎶 ndarray의 element들 간의 합을 구함, list의 sum 기능과 동일- axis(실행할 때 기준이 되는 dimension 축)를 지정하여 연산을 진행할 수도 있다.
mean & std
mathematical functions (etc)
concatenate
🎶 numpy array를 합치는(붙이는 함수# 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)
dot
🎶 Matrix 간 곱셈 (Element-wise 연산과 구분해야한다)transpose
🎶 transpose 또는 T attribute 사용Comparisons
All & Any
🎶 Array의 데이터 전부(and) 또는 일부(or)가 조건에 만족 여부 반환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)
np.where
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
argmax & argmin
- array내 최대값 또는 최소값의 index를 반환한다
- axis 기반의 반환
boolean index
💡 특정 조건에 따른 값을 배열 형태로 추출할 수 있다. Comparison operation 함수들도 모두 사용가능하다.test_array = np.array([1, 4, 0, 2, 3, 8, 9, 7], float)
test_array > 3
test_array[test_array > 3] # 조건이 True index의 element만 추출
fancy index
💡 boolean index와는 다르게 index값을 넣어준다. 즉, array를 index value로 사용해서 값을 추출한다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와 같은 효과이다.
loadtxt & savetxt
💡 text type의 데이터를 읽고, 저장할 수 있다!Author And Source
이 문제에 관하여(Python 데이터 분석 및 인공지능 학습에 필수적인 라이브러리 Numpy), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@devlee247/Python-데이터-분석-및-인공지능-학습에-필수적인-라이브러리-Numpy저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)