● Numpy에서 많이 사용하는 주요 기능
- 벡터 산술연산
- 다차원 배열 ndarray
- 표준 수학 함수
- 선형대수, 난수 생성, 푸리에 변환
○ 배열 생성 함수
함수 |
내용 |
np.array |
입력된 데이터를 ndarray로 변환. dtype을 명시하면 자료형을 설정할 수 있다 |
np.asarray |
입력 데이터를 ndarray로 변환하나 이미 ndarray일 경우에는 새로 메모리에 ndarray가 생성되지는 않는다 |
np.arange |
range 함수와 유사하나 ndarray를 반환, 자료형 기본 float64 |
np.ones |
전달인자로 전달한 dtype과 모양(행,렬)으로 배열을 생성하고 모든 내용을 1로 초기화하여 ndarray를 반환 |
np.zeros |
ones와 같으나 초기값이 0이다 |
np.empty |
ones와 zeros와 비슷하나 값을 초기화하지는 않는다 |
자세한 예시와 데이터 타입 알아보기
2020/03/05 - [SW개발/Framework Library] - [파이썬패키지] 딥러닝을 위한 Numpy1 - Numpy기초
○ 유니버셜 함수
unfunc라고 불리는 유니버셜 함수는 ndarray안에 있는 데이터 원소 별로 연산을 수행하는 함수입니다. 일종의 래퍼함수로 래퍼함수란, 다른 함수에 약간의 기능을 덧씌워 사용하는 함수를 말합니다.
함수 |
설명 |
abs, fabs |
각 원소의 절대값을 구한다. 복소수가 아닌 경우에는 fabs로 빠르게 연산가능 |
sqrt |
제곱근을 계산 arr ** 0.5와 동일 |
square |
제곱을 계산 arr ** 2와 동일 |
Exp |
각 원소에 지수 ex를 계산 |
Log, log10, log2, logp |
각각 자연로그, 로그10, 로그2, 로그(1+x) |
sign |
각 원소의 부호를 계산 |
ceil |
각 원소의 소수자리 올림 |
floor |
각 원소의 소수자리 버림 |
rint |
각 원소의 소수자리 반올림. dtype 유지 |
modf |
원소의 몫과 나머지를 각각 배열로 반환 |
isnan |
각 원소가 숫자인지 아닌지 NaN 나타내는 불리언 배열 |
isfinite, isinf |
배열의 각 원소가 유한한지 무한한지 나타내는 불리언 배열 |
cos, cosh, sin, sinh, tan, tanh |
일반 삼각함수와 쌍곡삼각 함수 |
logical_not |
각 원소의 논리 부정(not) 값 계산. -arr와 동일 |
함수 |
설명 |
add |
두 배열에서 같은 위치의 원소끼리 덧셈 |
subtract |
첫번째 배열 원소 - 두번째 배열 원소 |
multiply |
배열의 원소끼리 곱셈 |
divide |
첫번째 배열의 원소에서 두번째 배열의 원소를 나눗셈 |
power |
첫번째 배열의 원소에 두번째 배열의 원소만큼 제곱 |
maximum, fmax |
두 원소 중 큰 값을 반환. fmax는 NaN 무시 |
minimum, fmin |
두 원소 중 작은 값 반환. fmin는 NaN 무시 |
mod |
첫번째 배열의 원소에 두번째 배열의 원소를 나눈 나머지 |
greater, greater_equal, less, less_equal, equal, not_equal |
두 원소 간의 >, >=, <, <=, ==, != 비교연산 결과를 불리언 배열로 반환 |
logical_and, logical_or, logical_xor |
각각 두 원소 간의 논리연산, &, |, ^ 결과를 반환 |
○ 통계 함수
함수 |
설명 |
sum |
배열 전체 혹은 특정 축에 대한 모든 원소의 합을 계산 |
mean |
산술평균 |
std, var |
표준편차와 분산, 자유도를 줄 수 있음 |
min, max |
최소값, 최대값 |
argmin, argmax |
최소원소의 색인 값, 최대원소의 색인 값 |
cumsum |
각 원소의 누적 합 |
cumprod |
각 원소의 누적 곱 |
○ 집합 함수
함수 |
설명 |
unique(x) |
배열 x에서 중복된 원소를 제거한 후 정렬(sorted)하여 반환 |
intersect1d(x,y) |
배열 x와 y에 공통적으로 존재하는 원소를 정렬(sorted)하여 반환 |
union1d(x,y) |
두 배열의 합집합을 반환 |
in1d(x,y) |
x의 원소 중 y의 원소를 포함하는지를 나타내는 불리언 배열을 반환 |
setdiff1d(x,y) |
x와 y의 차집합을 반환 |
setxor1d(x,y) |
한 배열에는 포함되지만 두 배열 모두에는 포함되지 않는 원소들의 집합인 대칭 차집합을 반환 |
○ 배열의 파일 입출력
함수 |
설명 |
np.save(파일명, ndarray) |
Numpy 배열을 파일로 저장 |
np.load('파일명.npy') |
파일로 저장된 Numpy 배열을 불러오기 |
np.savetxt, np.loadtxt |
파일의 형태를 파이썬 pickle 형태(binary) 로 데이터를 저장하고 불러올 수 있고 확장자는 .npy |
○ 선형대수
함수 |
설명 |
np.dot(x, y) |
x,y 내적곱 반환 |
np.transpose |
행과 열의 위치를 바꿈 |
np.diag |
대각행렬 생성 |
np.eye |
대각원소가1이고 나머지는 0인 단위행렬 생성 |
np.trace |
대각합 행렬 반환 |
np.linalg.det |
역행렬이 존재하는지 여부 반환 1이면 존재, 0이면 존재하지 않음 ( 역행렬은 n차정방행렬 Amn과의 곱이 항등행렬 또는 단위행렬 In이 되는 n차정방행렬 ) |
np.linalg.eig |
고유값, 고유벡터 두 개의 객체 반환 ( 정방행렬 A에 대하여 Ax = λx (상수 λ) 가 성립하는 0이 아닌 벡터 x가 존재할 때 상수 λ 를 행렬 A의 고유값 (eigenvalue), x 를 이에 대응하는 고유벡터 (eigenvector) ) |
np.linalg.inv |
역행렬 반환 |
np.linalg.svd |
특이값 분해 특이값 분해는 고유값 분해(eigen decomposition)처럼 행렬을 대각화하는 한 방법 (참고)
|
np.linalg.solve |
연립방정식 해 풀기 |
np.linalg.lstsq |
최소자승 해 풀기 |
○ 난수 생성
numpy.random 모듈의 함수
함수 |
설명 |
seed |
난수 발생기 시드 지정 |
permutation |
순서를 임의로 바꾸고 임의의 순열 반환 |
rand |
균등분포에서 표본 추출 |
randint |
주어진 최소/최대 범위 안에서 임의의 난수 추출 |
randn |
표준편차가 1이고 평균값이 0인 정규분포에서 표본 추출 |
binomial |
이항분포에서 표본 추출 |
normal |
정규분포에서 표본 추출 |
beta |
베타분포에서 표본 추출 |
chisquare |
카이제곱분포에서 표본 추출 |
gamma |
감마분포에서 표본 추출 |
uniform |
균등분포에서 표본 추출 |
○ 기타
데이터 분석에서 전처리 과정이나 통계 정보를 수집할 때 '불리언 색인'이라는 개념을 많이 사용하게 됩니다.
파이썬의 리스트 중첩과 유사하지만 보다 쉽게 if문을 활용하고 다양한 데이터 가공을 가능하게 해줍니다.
1차원 배열인 arr에서 3보다 큰 값을 모두 추출하고, True에 해당하는 index의 array값만 반환 할 수도 있습니다.
2차원의 Numpy array에 불리언 색인을 적용한 예제 입니다.
비교 연산자 ==를 array에 바로 적용할 때 True, False 값이 각 array 값에 설정되며 이를 불리언 색인으로 사용할 수 있습니다.
조건절은 np.where(조건, x, y)를 사용하여 표현할 수 있습니다. 조건이 참이면 x의 원소를 거짓이면 y를 원소로 하는 벡터를 반환합니다.
- vstack 수직으로 합치기(axis=1) 열은 고정, 행을 늘림
- hstack 수평으로 합치기(axis=0) 행은 고정, 열을 늘림
- np.concatenate()
합칠때는 차원이 동일해야 합니다.
- np.sort(arr, axis=1) 좌에서 우로 정렬
- np.sort(arr, axis=0) 위에서 아래로 정렬
- np.sort(arr, axis=0)[::-1] 아래에서 위로 거꾸로 정렬
- np.sort(arr) 원래 배열은 그대로, 정렬 결과를 복사본으로 반환
- arr.sort() 배열 자체를 정렬
Numpy 시리즈
Numpy 기초
2020/03/05 - [SW개발/Framework Library] - [파이썬패키지] 딥러닝을 위한 Numpy1 - Numpy기초
Numpy 행렬 연산
2020/03/10 - [SW개발/Framework Library] - [파이썬패키지] 딥러닝을 위한 Numpy2 - 행렬의 연산
Numpy 함수 총 정리
2020/03/16 - [SW개발/Framework Library] - [파이썬 패키지] 딥러닝을 위한 Numpy3 - Numpy함수 총 정리
참고한 블로그