*numpy
- Numerical Python
- 파이썬의 고성능 과학 계산용 패키지
- Matrix와 Vector와 같은 Array 연산의 사실상의 표준
- 한글로 넘파이로 주로 통칭
*numpy 특징
- 일반 List에 비해 빠르고, 메모리 효율적
- 반복문 없이 데이터 배열에 대한 처리 지원
- 선형대수와 관련된 다양한 기능 제공 ex) dot , norm 등
- 굉장히 큰 Matrix에 리스트보다 메모리의 효율성 높음
*ndarray 특징
- 하나의 데이터 type만 배열에 넣을 수 있음
- List와 가장 큰 차이점 -> dynamic typing not supported
- C의 Array를 사용하여 배열 생성
- List와 메모리 저장 방법이 다름
*reshape
- Array의 shape의 크기를 변경함, element의 갯수는 동일
*flatten
- 다차원 array를 1차원 array로 변환
*indexing & slicing
- indexing : list와 달리 2차원 배열에서 [0,0] 표기법 제공
- slicing : list와 달리 행과 열부분을 나눠서 slicing이 가능 => matrix의 부분 집합 추출 용이
*identity & eye &diag
- identity : 단위 행렬을 생성함
- eye : 대각선이 1인 행렬, k값의 시작 index의 변경 가능
- diag : 대각 행렬의 값 추출
*random sampling
- 데이터 분포에 따른 sampling으로 array생성
- ex) np.random.uniform(0, 1, 10).reshape(2,5) => 균등분포 2x5 matrix 생성
- ex) np.random.normal(0, 1, 10).reshape(2,5) => 정규분포 2x5 matrix 생성
*axis
- sum, mean , std , var 등 operation function을 실행할때 기준이 되는 dimension 축
- dimension이 증가하면 새로운 dimension이 axis=0 이 되고, 기존 랭크는 하나씩 증가
*operation
- exponential : exp, expml, exp2, log , log10, log1p, log2, power, sqrt
- trigonometric : sin, cos, tan, acsin, arccos, atctan
- hyperbolic: sinh, cosh, tanh, acsinh, arccosh, atctanh
- sum , multiply(element-wise), divide, dot product, transpose
*concatenate
- vstack : numpy array를 수직으로 합치는(붙이는) 함수 ex) np.vstack((a,b)) = np.concatenate((a,b) , axis=0)
- hstack : numpy array를 수평으로 합치는(붙이는) 함수 ex) np.hstack((a,b)) = np.concatenate((a,b) , axis=1)
*broadcasting
- Shape이 다른 배열 간 연산을 지원하는 기능
- Scalar - vector 외에도 vector - matrix 간의 연산도 지원
*All & Any
- Array의 데이터 전부(and) 또는 일부(or)가 조건에 만족 여부 반환
- Any : condition이 하나라도 True면 True 반환
- All : condition에 해당하는 배열에 True or False 반환
- numpy 배열 크기가 동일한 배열 비교도 가능(element-wise)
*np.where
- ex1) np.where(a>0, 3, 2) #where(condition, TRUE , FALSE) => array([3, 3, 2])
- ex2) a = np.arrange(10) np.where(a>5) => (array([6, 7, 8, 9]), ) #True인 index 반환
- np.isnan(Not a Number) , np.isfinite(is finite number) 등 도 있음
*argmax & argmin
- array내 최대값 또는 최소값의 index를 반환
- ex1) a = np.array([1,2,4,5,8,78,23,3]) np.argmax(a) , np.argmin(a) => (5, 0)
- axis 기반의 반환
- ex2) a = np.array([[1,2,4,7,[9,88,6,45],[9,76,3,4]]) np.argmax(a, axis=1) , np.argmin(a, axis=0)
- => (array([3, 1, 1]) , array([0, 0 ,2 ,2]))
- ex3) a.argsort() => 작은순으로 인덱스반환
*boolean index
- 특정 조건에 따른 값을 배열 형태로 추출
- ex1) test_array = np.array([1, 4, 0 ,2 ,3, 8, 9, 7], float)
- test_array[test_array>3] => array([4., 8., 9., 7.]) #조건이 True인 index의 element만 추출
*fancy index
- numpy는 array를 index value로 사용해서 값 추출
- ex1) a = np.array([2, 4, 6, 8], float)
- b = np.array([0, 0, 1, 3, 2, 1], int) #반드시 integer로 선언
- a[b] #bracket index, b 배열의 값을 index로 하여 a의 값들 추출
- => array([ 2., 2., 4., 8., 6., 4.])
- ex2) a.take(b) #위와 같음
- => array([ 2., 2., 4., 8., 6., 4.])
- ※주의 : index를 벗어나면 안됨!
*loadtxt & savetxt
- text type의 데이터를 읽고, 저장하는 기능
- ex1) loadtxt : a = np.loadtxt("./populations.txt")
- ex2) savetxt : np.savetxt('int_data.csv' , a_int, delimiter",") # int_data.csv로 저장
*Numpy performance
- 일반적인 속도 : for lopp < list comprehension < numpy
- 100,000,000 번 loop이 돌 때, 약 4배 이상의 성능 차이를 보임
- Numpy는 C로 구현되어 있어, 성능을 확보하는 대신 파이썬의 가장 큰 특징인 dynamic typing을 포기
- 대용량 계산에서 가장 흔히 사용
- Concatenate 처럼 계산이 아닌, 할당에서는 연산 속도의 이점이 없음
'부스트캠프 AI Tech > [Week1] Python' 카테고리의 다른 글
[Week1] Python - pandas (0) | 2021.08.06 |
---|---|
[Week1] Python - pythonic code (0) | 2021.08.04 |
[Week1] Python - Data Structure (0) | 2021.08.04 |