티스토리 뷰
728x90
연산
포함 여부를 판단하는 연산
- in: 데이터가 포함되어 있으면 True 아니면 False
- not in: 데이터가 포함되어 있지 않으면 True 아니면 False
배열의 전치와 축 변경
- 전치: 행과 열을 반전
- 축 변경: 3차원 이상에서 데이터의 축 순서를 바꾸는 것
- 머신러닝 등을 할 때 데이터의 증강(데이터를 늘리는 것)이나 다양한 패턴을 찾고자 할 때 사용
- 행렬은 T라는 속성으로 전치 가능
- numpy의 배열에는 transpose라는 메서드를 제공해서 메서드에 축의 순서를 설정하면 축의 순서를 변경해준다.
- 실제적으로 3차원 이상의 데이터는 차원 변경을 잘 하지 않는다.
#행렬의 전치 - 축 변경
import numpy as np
original = np.array([[1,2,3],[4,5,6]])
print(original)
print(original.T)
print(original.transpose(1,0))
# 실행 결과
[[1 2 3]
[4 5 6]]
[[1 4]
[2 5]
[3 6]]
[[1 4]
[2 5]
[3 6]]
랜덤 관련
- 머신러닝이나 데이터 분석에서 랜덤은 샘플 데이터 추출에 사용
- 프로그래밍 언어에서 랜덤은 seed라고 하는 정수를 설정해서 난수표를 만들고 그 난수표에서 순서대로 데이터를 가져온다.
- 실제 랜덤을 만들고자 하면 seed 값을 실시간으로 변경해야 한다.
- 프로그래밍 언어 별로 seed 값이 기본적으로 실시간으로 변경되는 언어가 있고 고정된 언어가 있다.
메서드
#시드 설정
numpy.random.seed(seed = 시드 번호)
#0.0 ` 1.0 사이의 숫자를 개수만큼 추출
numpy.random(데이터 개수)
#최소와 최대 사이에서 개수만큼 정수를 추출
numpy.randint(최소, 최대, 데이터 개수)
#균등 분포에서 데이터 개수만큼 추출
numpy.rand(데이터 개수)
#표준 편차가 1이고 평균이 0인 정규 분포 사이에서 데이터 개수만큼 추출
numpy.randn(데이터 개수)
#이항분포에서 추출
#n: 0부터 나올 수 있는 숫자까지의 범위, p: 확률 , size: 개수
numpy.binomial(n,p,size)
permutation: 정수를 설정해서 랜덤한 배열을 생성
shuffle: 랜덤한 배열을 생성
choice(): 배열에서 복원 추출
복원 추출과 비복원 추출
- 복원 추출: 한 번 시행한 결과를 다시 모집단에 포함시켜 시행
- 비복원 추출: 한 번 시행한 결과는 모집단에서 배제한뒤 시행
- 파이썬은 실행될 때 seed를 설정하지 않으면 seed를 실행시간을 기준으로 설정한다. (랜덤한 숫자 추출의 개념)
실습
#seed를 설정하지 않으면 실행 시간을 기준으로 seed가 설정되므로
#실행할 때마다 다른 숫자가 리턴
result = np.random.normal(size=5)
print(result)
#seed를 42로 고정하면 실행할 때마다 동일한 데이터가 리턴된다.
#머신러닝에서는 seed를 고정시키고 작업을 수행
np.random.seed(seed=42)
result = np.random.normal(size = 5)
print(result)
#실습 결과
[ 0.49671415 -0.1382643 0.64768854 1.52302986 -0.23415337]
[ 0.49671415 -0.1382643 0.64768854 1.52302986 -0.23415337]
numpy의 메서드
메서드의 분류
- Unary Function: 매개 변수가 1개인 경우
- Binary Function: 매개 변수가 2개인 경우
기본 통계 함수
axis:
- sum: 합계
- prod: 곱
- nanprod: None은 1로 간주하고 곱
- nansum: None을 0으로 간주하고
- mean: 평균
- median: 중앙값
- max:최대
- min: 최소
- std: 표준 편차
- var: 분산
- percentile: 밴분위수
* 표준 편차와 분산은 ddof 옵션을 1로 설정해서 비편향 표준 편차와 분산을 구한다.
자유도는 다른 데이터의 값이 결정되면 자동을 값이 결정되는 데이터의 개
표준 편차와 분산
- 표준 편차와 분산은 ddof 옵션에 따라 값이 다르게 나온다.
- 표준 편차와 분산은 평균이라는 통계값을 가지고 구한다.
- 평균이 결정되면 전체 데이터 개수 - 1 만큼의 값을 알게되면 나머지 1개의 값은 자동으로 결정된다. 자동으로 결정되는 값을 빼고 계산하거나 포함시켜 계산할 수 있다. (ddof 옵션으로 설정 가능)
기술 통계
- argmin, argmax: 최소값과 최대값을 인덱스
- comsum: 누적합
- cumprodu: 누적 곱
- diff: 차분은 이전 값을 뺀값, n이라는 옵션으로 차수를 설정
소수 관련 함수
소수를 버리거나 올림하거나 반올림해주는 함수를 제공
숫자처리 관현 함수
절대값, 제곱, 제곱근, 부호 판별 함수를 제공
논리 함수
numpy.isnan(배열): 배열에 None, Null이 있는지 확인
numpy.logical_not(조건): 조건에 맞는 데이터인지 아닌지 여부를 리턴
ar = np.array([10,2,3,np.nan,32])
#결측치 확인
print(np.isnan(ar))
#결측치를 제외하고 가져오기
result = ar[np.logical_not(np.isnan(ar))]
print(result)
[False False False True False]
[10. 2. 3. 32.]
2개의 배열을 가지고 작업하는 함수
- add, subtract, multiply, divide, floor_divide, mod
- power
- maximaum, fmax, minimum, fmin
f가 붙는 함수는 np.nan은 무시한다.
- greater, greater_equal, less, less_equal, equal, not, equal
결과가 bool의 배열
- logical_and, logical_or, logical_xor
- eXclusive OR(배타적 논리합)
- where(bool 배열, True일 때 선택할 배열, False일 때 선택할 배열)
집합 관련 함수
- unique(): 중복을 제거
- intersect1d(): 교집합
- union1d():합집합
- in1d():데이터의 존재 여부를 bool배열로 확인
배열 분할
numpy.split( 배열, 분할 기준 , axis=축 )
배열 결합
- numpy.concatence(배열1, 배열2, axis = 축)
- hstack, vstack, dstack, stack, r_, c_, tile: 배열을 연결해주는 함수
- 테이블의 데이터가 많아서 조회가 그린 경우 테이블을 분할해서 저장
- 행을 분할하는 겨우: partition
- 데이터베이스에서는 조인을 통해 하나의 테이블로 변환
- hstack: 행의 개수가 같은 두 개 이상의 배열을 옆으로 연결
- vstack: 열의 개수가 같은 두 개 이상의 배열을 상하로 연결
- dstack: 차원을 늘려서 결합
- stack: stack 함수를 확장한 것으로 차원의 위치(axis)를 직접 설정
- tile(배열, 반복횟수): 배열을 반복해서 하나의 배열 생성
ar = np.array([[1,2,3],[4,5,6]])
br = np.array([[11,22,33],[44,55,66]])
print(np.hstack([ar, br]))
print(np.vstack([ar, br]))
print(np.dstack([ar, br]))
#실행 결과
[[ 1 2 3 11 22 33]
[ 4 5 6 44 55 66]]
[[ 1 2 3]
[ 4 5 6]
[11 22 33]
[44 55 66]]
[[[ 1 11]
[ 2 22]
[ 3 33]]
[[ 4 44]
[ 5 55]
[ 6 66]]]
728x90
'python' 카테고리의 다른 글
[python] selenium (0) | 2024.02.13 |
---|---|
[python] 데이터 수집 (1) | 2024.02.13 |
[python] numpy(1) (0) | 2024.02.13 |
[python] sklearn, pandas(2) (1) | 2024.02.13 |
[python]pandas (0) | 2024.02.07 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 더오름
- 프로그래머스
- 인프런강의
- 인프런강의후기
- 웹프로그래밍
- Python
- 알고리즘
- 코딩테스트
- ssafy기자단
- 알고리즘이론
- numpy
- PANDAS
- 백준알고리즘
- 백준
- it도서큐레이션
- dataframe
- 티스토리챌린지
- 웹
- 위니브엠베서더
- 생성형 AI
- 전자회로
- 웹개발
- 위니브
- django
- SSAFYcial
- 파이썬
- 제주코딩베이스캠프
- SSAFY
- 인프런
- 오블완
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함
250x250