NumPy 활용한 데이터 분석 입문(3) - 기본연산, 집계함수

천호영·2021년 6월 19일
0

Numpy의 기본연산

NumPy에는 기본적인 산술연산부터, 비교연산, 기타 수학 관련 고급 연산 등 다양한 함수가 구현되어 있습니다.

  • 모든 연산은 배열의 각 요소별로 적용됩니다.(element-wise)
  • 모든 산술 연산 함수는 NumPy 모듈에 구현되어 있습니다.

NumPy의 사칙연산

numpy.add() 또는 +연산자
numpy.substract() 또는 -연산자
numpy.divide() 또는 /연산자
numpy.multiply() 또는 *연산자

numpy 공식사이트 Docuentation을 참고하면 좋습니다.

<실습코드>

import numpy as np
import time

# 샘플 데이터 생성
a = np.arange(1,10).reshape(3,3)
print('A---')
print(a)

b = np.arange(9,0,-1).reshape(3,3)
print('\nB---')
print(b)

'''
# NumPy 의 덧셈연산
'''
result = a + b
print('\nResult of A + B')
print(result)

result = np.add(a,b)
print('\nResult of np.add(a,b)')
print(result)

'''
# NumPy 의 나눗셈 연산
'''
result = a/b
print('\nResult of A / B')
print(result)

result = np.divide(a,b)
print('\nResult of np.divide(a,b)')
print(result)


'''
# NumPy 의 비교연산(>)
'''
result = a > b
print('\nResult of comparison operator(>)')
print(result)

'''
# NumPy 의 비교연산(!=)
'''
result = a != b
print('\nResult of comparison operator(!=)')
print(result)

'''
# Python 코드 실행 시간 측정하기
'''
python_arr = range(10000000)
start = time.time() 
for i in python_arr:
	i + 1
print("\nPython(ms):", (time.time() - start)*1000) 


'''
# NumPy 코드 실행 시간 측정하기
'''
numpy_arr = np.arange(10000000)
start = time.time()
numpy_arr+1
print("NumPy(ms):", (time.time() - start)*1000)

<실행결과>

A---
[[1 2 3]
 [4 5 6]
 [7 8 9]]

B---
[[9 8 7]
 [6 5 4]
 [3 2 1]]

Result of A + B
[[10 10 10]
 [10 10 10]
 [10 10 10]]

Result of np.add(a,b)
[[10 10 10]
 [10 10 10]
 [10 10 10]]

Result of A / B
[[0.11111111 0.25       0.42857143]
 [0.66666667 1.         1.5       ]
 [2.33333333 4.         9.        ]]

Result of np.divide(a,b)
[[0.11111111 0.25       0.42857143]
 [0.66666667 1.         1.5       ]
 [2.33333333 4.         9.        ]]

Result of comparison operator(>)
[[False False False]
 [False False  True]
 [ True  True  True]]

Result of comparison operator(!=)
[[ True  True  True]
 [ True False  True]
 [ True  True  True]]

Python(ms): 840.1219844818115
NumPy(ms): 34.394025802612305

Numpy의 집계함수

집계 함수(Aggregate Functions) 란 데이터를 종합하여 특정 연산을 적용하는 함수들을 총칭합니다.

NumPy는 sum(), mean(), count(), min(), max() 등의 다양한 집계함수를 제공하며, 이때 가장 중요한 특징이 데이터의 집계 방향을 결정하는 다음의 axis 값 입니다.

axis = None (default)
  • 대상 ndarray 의 모든 요소가 연산 대상이 됨
  • Default 값이므로 집계 함수 호출시 생략 가능
axis = 0
  • 열을 기준으로 동일 인덱스의 요소를 그룹으로 연산함
axis = 1
  • 행을 기준으로 동일 인덱스의 요소를 그룹으로 연산함

<실습코드>

import numpy as np

# 샘플 데이터 생성
sample = np.arange(1,10).reshape(3,3)
print('Sample')
print(sample)

'''
# axis=None 실습 (default)
'''
print('\n[CASE-1]axis=None')
print('sum :', sample.sum() )
print('mean :', sample.mean() )
print('std :', sample.std() )
print('max :', sample.max() )
print('min :', sample.min() )

'''
# axis=0 실습
(아래 주석#을 지우고 _____ 란에 실습을 시작하세요.)
'''
print('\n[CASE-2]axis=0')
print('sum :', sample.sum(axis=0) )
print('mean :', sample.mean(axis=0) )
print('std :', sample.std(axis=0) )
print('max :', sample.max(axis=0) )
print('min :', sample.min(axis=0) )

'''
# axis=1 실습 (default)
'''
print('\n[CASE-3]axis=1')
print('sum :', sample.sum(axis=1) )
print('mean :', sample.mean(axis=1) )
print('std :', sample.std(axis=1) )
print('max :', sample.max(axis=1) )
print('min :', sample.min(axis=1) )

<실행결과>

Sample
[[1 2 3]
 [4 5 6]
 [7 8 9]]

[CASE-1]axis=None
sum : 45
mean : 5.0
std : 2.581988897471611
max : 9
min : 1

[CASE-2]axis=0
sum : [12 15 18]
mean : [4. 5. 6.]
std : [2.44948974 2.44948974 2.44948974]
max : [7 8 9]
min : [1 2 3]

[CASE-3]axis=1
sum : [ 6 15 24]
mean : [2. 5. 8.]
std : [0.81649658 0.81649658 0.81649658]
max : [3 6 9]
min : [1 4 7]

0개의 댓글

관련 채용 정보