# Numpy 기본 연산..?
Nuimpy 기본 연산의 특징은 아래와 같다.
- 연산자(+,-,*,/,,<,>,==,!= ...)을 이용하여 직관적인 배열 연산이 가능하다.
- 모든 연산은 배열의 각 요소별로 적용된다.
- 모든 산술 연산은 Numpy모듈에 구현되어있다.
# Numpy 사칙 연산
간단한 것이니 예시 코드로 설명하겠다.
import numpy as np
a = np.arange(1,10).reshape(3,3)
print("A :: \n",a)
b= np.arange(9,0,-1).reshape(3,3)
print("\nB ::\n",b)
#덧셈
add_operator_result = a + b
print("\nResult of A + B\n",add_operator_result)
add_method_result = np.add(a,b)
print("Result of np.add(a,b) :: \n",add_method_result)
#뺄셈
subtract_operator_result = a - b
print("\nResult of A - B\n",subtract_operator_result)
subtract_method_result = np.subtract(a,b)
print("Result of np.subtract(a,b) :: \n",subtract_method_result)
#곱셈
multiply_operator_result = a * b
print("\nResult of A * B\n",multiply_operator_result)
multiply_method_result = np.multiply(a,b)
print("Result of np.multiply(a,b) :: \n",multiply_method_result)
#나눗셈
divide_operator_result = a / b
print("\nResult of A / B\n",divide_operator_result)
divide_method_result = np.divide(a,b)
print("Result of np.divide(a,b) :: \n",divide_method_result)
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
[[-8 -6 -4]
[-2 0 2]
[ 4 6 8]]
Result of np.subtract(a,b) ::
[[-8 -6 -4]
[-2 0 2]
[ 4 6 8]]
Result of A * B
[[ 9 16 21]
[24 25 24]
[21 16 9]]
Result of np.multiply(a,b) ::
[[ 9 16 21]
[24 25 24]
[21 16 9]]
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. ]]
# Numpy 비교 연산
비교 연산은 아래의 연산자를 활용한다.
- >, < :크다, 작다
- >=, <= : 크거나 같다, 작거나 같다
- == : 같다.
- != : 같지 않다.
비교연산자의 결과는 Bool 자료형이다. (True, False) 또한, 모든 연산은 배열의 요소별로 적용된다.
간단한 예시 코드
import numpy as np
a = np.arange(1,10).reshape(3,3)
print("A :: \n",a)
b= np.arange(9,0,-1).reshape(3,3)
print("\nB :: \n",b)
#비교 연산자 >=
operator_result1 = a >= b
print("\nResult of A >= B\n",operator_result1)
#비교 연산자 !=
operator_result2 = a != b
print("\nResult of A != B\n",operator_result2)
A ::
[[1 2 3]
[4 5 6]
[7 8 9]]
B ::
[[9 8 7]
[6 5 4]
[3 2 1]]
Result of A >= B
[[False False False]
[False True True]
[ True True True]]
Result of A != B
[[ True True True]
[ True False True]
[ True True True]]
# Python Vs Numpy :: 연산 속도 비교
이전 포스팅에서 Numpy의 장점은 다차원의 배열의 연산이 빠르고 메모리 활용이 효율적이라고 언급하였는데 이를 아래 코드를 통해 확인해보겠다.
Python을 통한 배열 연산은 반복문으로 수행한다.
import numpy as np
import time
python_arr = range(10000000)
start = time.time()
for i in python_arr:
i+1
stop = time.time()
print("\nPython(ms) :: ", (stop - start)*1000)
numpy_arr = np.arange(10000000)
start = time.time()
numpy_arr + 1
stop = time.time()
print("\nNumpy(ms) :: ", (stop - start)*1000)
Python(ms) :: 916.8510437011719
Numpy(ms) :: 142.37451553344727
위의 결과를 살펴보면 Numpy 연산이 Python 연산보다 더 빠른 것을 확인할 수 있다.
# Numpy 다른 고성능 연산
위의 기본 적인 연산 뿐만 아니라 numpy에서는 아래와 같은 고성능의 다양한 연산 함수를 제공한다.
- 제곱연산 (numpy.square() , **2)
- 제곱근연산 (numpy.sqrt())
- 지수연산(numpy.exp())
- 삼각함수(numpy.sin(),numpy.cos())
위의 연산은 예시 코드 없이 이런 함수가 있다는 정도로 정리하겠다.
'공부한 것들.. > Numpy' 카테고리의 다른 글
Numpy 데이터 조회를 위한 인덱싱 및 슬라이싱 (0) | 2024.09.12 |
---|---|
Numpy 집계 함수 (0) | 2024.09.12 |
Numpy ndarray shape 변경 (0) | 2024.09.12 |
Numpy :: 데이터 타입 (0) | 2024.09.12 |
Numpy 자료구조:: ndarray 생성 (2) | 2024.09.11 |