Numpy
- 과학계산을 위한 라이브러리로 다차원 배열 처리하는데 필요한 기능을 제공한다.
- numpy 배열은 동일한 타입의 값을 갖는다.
1. 기본 사용법
1) numpy array 생성
# 1차원 배열 만들기 z1 = np.array([1,2,3]) |
|
# 2차원 배열 만들기 (2행3열) z2 = np.array([[1,2,3],[4,5,6]]) |
|
# 2차원 배열 만들기 (3행3열) lst = [[1,2,3],[4,5,6],[7,8,9]] z3 = np.array(lst) |
|
# bool타입의 배열 만들기 (3행3열) b = np.array([[False,True,False], [True,False,True], [False,True,False]]) |
2) 연속되는 수 배열 생성 및 차원 바꾸기
# range로 배열 만들기 np.array(range(20)) |
|
# np.arange로 배열 만들기 np.arange(10) np.arange(3, 10) |
|
# reshape() : 배열모양 바꾸기 a.reshape((10,),order="C") # 행을 기준으로 1차원 변경 a.reshape((10,),order="F") # 열을 기준으로 1차원 변경 |
|
# ravel() : 1차원으로 변경 a = np.arange(10).reshape((5,2),order="F") a.ravel() # 행을 기준으로 1차원 변경 a.ravel("C") # 행을 기준으로 1차원 변경 a.ravel("F") # 열을 기준으로 1차원 변경 |
|
# flatten() : 1차원으로 변경 a = np.arange(10).reshape((5,2),order="F") a.flatten("C") # 행을 기준으로 1차원 변경 a.flatten("F") # 열을 기준으로 1차원 변경 |
|
x = np.array([[1,2,3],[4,5,6]]) |
|
# np.concatenate() : 행렬 이어붙이기 np.concatenate([x,y],axis=0) # 행 기준으로 붙이기 np.vstack((x,y)) np.concatenate([x,y],axis=1) # 열 기준으로 붙이기 np.hstack((x,y)) |
3) 배열 채우기
# np.zeros() : 배열에 모두 0으로 채우는 함수 np.zeros((3,3)) |
|
# np.ones() : 배열에 모두 1로 채우는 함수 np.ones((4,4)) |
|
# np.full() : 배열에 사용자가 지정한 값을 채우는 함수 np.full((3,3),2) |
|
# np.eye() : 대각선으로 1이고 나머지는 0으로 채우는 함수 np.eye(3) # 3행3열 np.eye(4) # 4행4열 |
4) 배열의 인덱싱 & 슬라이싱 [행, 열]
lst = [[1,2,3],[4,5,6],[7,8,9]] 일때 |
|
# 행 추출 |
|
# 열 추출 z3[:,0] # 모든행의 첫번째열 |
|
# 0행,1행의 첫번째열 z3[0:2,0] |
|
# 1행부터 끝까지, 1열부터 끝까지 |
|
# [[행1,행2,행3],[열1,열2,열3]] z3[[0,2,1],[0,2,2]] |
|
# bool형식으로 인덱싱 c = z3%2==0 z3[c] |
2. 연산 및 통계
1) 배열 모양이 같을때 연산
x = np.array([1,2,3]) |
|
# 더하기 x + y |
|
# 빼기 x - y |
|
# 곱하기 x * y |
|
# 나누기 x / y |
2) 배열 모양이 다를때 연산(broadcast)
x = np.array([[1,2],[3,4]]) 일때 |
|
x + y | |
x + z |
3) 연산 및 통계치
x = np.array([[1,2],[3,4]]) |
|
# np.dot() : 행렬의 곱 np.dot(x,y) |
|
# np.sum() : 전체 합 np.sum(x) np.sum(x,axis=0) # 행을 기준으로 열의 합 np.sum(x,axis=1) # 열을 기준으로 행의 합 |
|
# np.mean() : 전체 평균 np.mean(x) np.mean(x,axis=0) # 행을 기준으로 열의 평균 np.mean(x,axis=1) # 열을 기준으로 행의 평균 |
|
# np.var() : 전체 분산 np.var(x) np.var(x,axis=0) # 행을 기준으로 열의 분산 np.var(x,axis=1) # 열을 기준으로 행의 분산 |
|
# np.std() : 전체 표준편차 np.std(x) np.std(x,axis=0) # 행을 기준으로 열의 표준편차 np.std(x,axis=1) # 열을 기준으로 행의 표준편차 |
|
# np.max() : 전체 최대값 np.max(x) np.max(x,axis=0) # 행을 기준으로 열의 최대값 np.max(x,axis=1) # 열을 기준으로 행의 최대값 |
|
# np.min() : 전체 최소값 np.min(x) np.min(x,axis=0) # 행을 기준으로 열의 최소값 np.min(x,axis=1) # 열을 기준으로 행의 최소값 |
x = np.array([[1,2],[3,4],[5,0]]) 일때 |
|
# np.argmin() : 최소값이 있는 인덱스 리턴 np.argmin(x) # 위치 출력 np.argmin(x.reshape((6,))) np.argmin(x,axis=0) np.argmin(x,axis=1) |
|
# np.argmax() : 최대값이 있는 인덱스 리턴 np.argmax(x) # 위치 출력 np.argmax(x.reshape((6,))) np.argmax(x,axis=0) np.argmax(x,axis=1) |
|
# np.cumsum() : 누적합 np.cumsum(x) np.cumsum(x.reshape((6,))) np.cumsum(x,axis=0) np.cumsum(x,axis=1) |
|
# np.cumprod() : 누적곱 np.cumprod(x) np.cumprod(x.reshape((6,))) np.cumprod(x,axis=0) np.cumprod(x,axis=1) |
|
# np.prod() : 전체곱 np.prod(x) np.prod(x.reshape((6,))) np.prod(x,axis=0) np.prod(x,axis=1) |
3. numpy 자료형
- int, float, bool, complex
# int : 정수형 |
|
# float : 실수형 f = np.float32(1) |
|
# bool : 참/거짓 b = np.bool(0) |
|
# complex : 복소수형 c = np.complex(20) |
|
# 실수형 배열 생성 z = np.arange(5,dtype="f") |
4. 기타 함수
# repeat() : 값을 횟수만큼 반복 x = np.arange(3) x.repeat(2) x.repeat([2,3,4]) # 위치별 반복 횟수 지정
x.repeat(2) x.repeat(2,axis=0) x.repeat(2,axis=1) |
|
# np.tile() : 모양대로 횟수 반복 np.tile(x,2) |
|
# np.unique() : 문자안에 유일값만 출력 np.unique([10,10,20,20,30,30,30]) x = np.array(['a','a','b','b','b','a','c','c']) np.unique(x) |
|
# np.unique(return_counts=True) : 빈도수까지 출력 np.unique(x,return_counts=True) index, cnt = np.unique(x,return_counts=True) print(index) print(cnt)
|
|
# 행, 열 별로 유일값 출력 np.unique(y) np.unique(y,axis=0) np.unique(y,axis=1)
|
|
data1 = np.arange(0,20,2) |
|
# 인덱스 값 비교 data1 == data2 data1 >= data2 data1 <= data2 |
|
# 인덱스 끼리 비교해서 최대값 출력np.maximum(data1,data2) # 인덱스 끼리 비교해서 최소값 출력 np.minimum(data1,data2) |
|
# 합집합 np.union1d(data1,data2) |
|
# 교집합 np.intersect1d(data1,data2) |
|
# 차집합 (순서 상관 있음) np.setdiff1d(data1,data2) np.setdiff1d(data2,data1) |
|
# array값들 정렬(인덱스 번호로 출력) x = np.array([5,2,4,7,1]) x.argsort() # 오름차순 x[x.argsort()] # 실제값으로 보기 x.argsort()[::-1] # 내림차순 x[x.argsort()][::-1] # 실제값으로 보기 ix = x.argsort()[::-1] x[ix] |
'컴퓨터 > 파이썬' 카테고리의 다른 글
파이썬(Python) - Class ② (0) | 2020.04.07 |
---|---|
파이썬(Python) - Class ① (0) | 2020.04.06 |
파이썬(Python) - 스크래핑 ④ selenium을 이용한 크롤링 (0) | 2020.04.05 |
파이썬(Python) - 크롤링 연습 ② 국민 청원 청원 목록 수집(추천순) (2) | 2020.04.03 |
파이썬(Python) - 한글 형태소 분석 (0) | 2020.04.02 |