-
NumPy 한번에 끝내기 04 - 데이터 과학 핵심 도구 (연산 함수/정렬/입출력)빅데이터/NumPy 2022. 1. 18. 19:25
유투버 '이수안 컴퓨터 연구소'님 강의 참조
01 집계 함수
# sum() : 합계 a2 = np.random.randint(1, 10, size=(3,3)) print(a2) print(a2.sum(), np.sum(a2)) print(a2.sum(axis=0), np.sum(a2,axis=1)) [[3 3 1] [1 9 8] [6 1 2]] 34 34 [10 13 11] [ 7 18 9] # cumsum() : 누적합 계산 print(a2) print(np.cumsum(a2)) print(np.cumsum(a2, axis=1)) print(np.cumsum(a2, axis=0)) [[6 2 2] [9 8 6] [1 1 8]] [ 6 8 10 19 27 33 34 35 43] [[ 6 8 10] [ 9 17 23] [ 1 2 10]] [[ 6 2 2] [15 10 8] [16 11 16]] # diff() : 차분 계산 print(a2) print(np.diff(a2)) print(np.diff(a2, axis=1)) print(np.diff(a2, axis=0)) [[6 2 2] [9 8 6] [1 1 8]] [[-4 0] [-1 -2] [ 0 7]] [[-4 0] [-1 -2] [ 0 7]] [[ 3 6 4] [-8 -7 2]] # prod() : 곱 계산 / cumprod : 누적 곱 계산 print(a2) print(np.prod(a2)) print(np.prod(a2, axis=1)) print(np.prod(a2, axis=0)) print(np.cumprod(a2)) [[6 2 2] [9 8 6] [1 1 8]] 82944 [ 24 432 8] [54 16 96] [ 6 12 24 216 1728 10368 10368 10368 82944] # dot()/matmul() : 점곱/행렬곱 계산 print(a2) b2 = np.ones_like(a2) print(b2) print(np.dot(a2,b2)) print(np.matmul(a2, b2)) [[6 2 2] [9 8 6] [1 1 8]] [[1 1 1] [1 1 1] [1 1 1]] [[10 10 10] [23 23 23] [10 10 10]] [[10 10 10] [23 23 23] [10 10 10]] # tensordot() : 텐서곱 계산 # 축 설정 가능 print(np.tensordot(a2, b2)) 43 # cross() : 벡터곱 x = [1,2,3] y = [4,5,6] print(np.cross(x,y)) # 6 * 2 - 3 * 5 / 3 * 4 - 6 / 4 * 2 - 5 [-3 6 -3] # inner()/outer() : 내적/외적 print(a2) print(b2) print(np.inner(a2, b2)) print(np.outer(a2, b2)) [[6 2 2] [9 8 6] [1 1 8]] [[1 1 1] [1 1 1] [1 1 1]] [[10 10 10] [23 23 23] [10 10 10]] [[6 6 6 6 6 6 6 6 6] [2 2 2 2 2 2 2 2 2] [2 2 2 2 2 2 2 2 2] [9 9 9 9 9 9 9 9 9] [8 8 8 8 8 8 8 8 8] [6 6 6 6 6 6 6 6 6] [1 1 1 1 1 1 1 1 1] [1 1 1 1 1 1 1 1 1] [8 8 8 8 8 8 8 8 8]]
- 축 조정 가능 # mean() : 평균 계산 print(a2) print(np.mean(a2)) [[6 2 2] [9 8 6] [1 1 8]] 4.777777777777778 # std() : 표준 편차 print(a2) print(np.std(a2)) [[6 2 2] [9 8 6] [1 1 8]] 3.083208205669246 # var() : 분산 계산 print(a2) print(np.var(a2)) [[6 2 2] [9 8 6] [1 1 8]] 9.506172839506172 # min() / max() : 최소/최대 print(a2) print(np.min(a2), np.max(a2)) [[6 2 2] [9 8 6] [1 1 8]] 1 9 # argmin() / argmax() : 최소/최대값 인덱스 print(a2) print(np.argmin(a2), np.argmax(a2)) [[6 2 2] [9 8 6] [1 1 8]] 6 3 # median() : 중앙값 print(a2) print(np.median(a2)) [[6 2 2] [9 8 6] [1 1 8]] 6.0
# percentile() : 백분위 수 a1 = np.array([0,1,2,3]) print(a1) print(np.percentile(a1, [0,20,40,60,80,100], interpolation='linear')) *'interpolation' 설정 가능 [0 1 2 3] [0. 0.6 1.2 1.8 2.4 3. ]
# any() / all () - 축 조정 가능 # - 배열 위치에 하나라도 True가 있으면 True (any) # - 배열 위치에 모두가 같아야 True a2 = np.array([[False, False, True], [True, True, True], [False, True, True]]) print(np.any(a2)) print(np.all(a2)) True False
02 비교 연산
- 비교연산자를 써서 배열을 비교 한다. 다른 연산과 다른 특이점은 없다. 또한 차원에 대한 제한도 없다.
# 비교 연산 a1 = np.arange(1, 10) print(a1) print(a1 == 5) print(a1 != 5) print(a1 < 5) [1 2 3 4 5 6 7 8 9] [False False False False True False False False False] [ True True True True False True True True True] [ True True True True False False False False False]
- 비교 범용 함수 또한 존재. 아래와 같이 쓰면 된다.
03 배열 정렬
a1 = np.random.randint(1, 10, size=10) print(a1) print(np.sort(a1)) print(np.argsort(a1)) #배열 내 값을 오름차순으로 하는 위치를 반환 [8 9 1 7 2 4 5 9 3 2] [1 2 2 3 4 5 7 8 9 9] [2 4 9 8 5 6 3 0 1 7] # partition() : 배열에서 k개의 작은 값을 반환 , 축 및 차원 조정 가능 a1 = np.random.randint(1, 10, size=10) print(a1) print(np.partition(a1, 3)) #partition(배열, 이값보다 작은 값 출력) - default 로 3개를 맨 앞에 출력 [5 2 1 3 3 9 3 6 3 3] [1 2 3 3 3 3 9 6 3 5]
04 배열 입출력
- 넘파이를 써서 배열을 저장/로드 등을 할 수 있다.
a2 = np.random.randint(1, 10, size=(5, 5)) np.save("a", a2)
'빅데이터 > NumPy' 카테고리의 다른 글
NumPy 한번에 끝내기 03 - 데이터 과학 핵심 도구 (배열 변환/연산) (0) 2022.01.18 NumPy 한번에 끝내기 02 - 데이터 과학 핵심 도구 (배열 조회/인덱싱/삽입/수정/삭제/복사) (0) 2022.01.18 NumPy 한번에 끝내기 01 - 데이터 과학 핵심 도구 (배열 생성) (0) 2022.01.17