본문 바로가기
공부한 것들../Numpy

Numpy 기본 연산

by bottle-an00 2024. 9. 12.

# 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