python
[numpy] numpy의 벡터 연산 (연산자 활용)
전감자(◔◡◔)
2022. 9. 28. 19:34
'''
numpy의 벡터 연산 ( vectorized operation )
- 기존 파이썬에서 지원 안되던 요소간의 연산이 가능하다.
- 연산 성능도 매우 좋다.
- 연산 종류: 비교연산, 산술연산 지원
- 연산 대상: 다차원배열과 스칼라 연산
다차원배열과 다차원배열 연산
* 브로드캐스팅(broadcastring )
- 서로 다른 차원을 가진 다차원 배열이 연산할 때
연산이 가능하도록 차원을 맞추어 주는 작업을 의미한다.
'''
# 1. 파이썬 연산
print("리스트와 스칼라 연산")
x = [1,2,3]
x2 = 5
print([1,2,3] * 5)
print(x * x2)
print("리스트와 리스트 연산")
x = [1,2,3]
x2 = [10,20,30]
print([1,2,3] + [10,20,30,40]) # [1, 2, 3, 10, 20, 30, 40]
print(x + x2) # [1, 2, 3, 10, 20, 30]
# 2. numpy 연산
import numpy as np
print("ndarray 와 스칼라 연산") # 자동으로 broadcasting이 되어 연산됨.
arr = np.array([1,2,3])
print(arr * 5) # [ 5 10 15]
print(arr + 5) # [6 7 8]
print(arr - 5) # [-4 -3 -2]
print(arr / 5) # [0.2 0.4 0.6]
print("ndarray 와 ndarray 연산")
arr = np.array([1,2,3])
arr2 = np.array([10,20,30])
# print(np.array([1,2,3]) + np.array([10,20,30,40])) # 반드시 shape 일치해야 된다.
print(arr + arr2) # [11 22 33]
print(arr - arr2) # [ -9 -18 -27]
print(arr * arr2) # [10 40 90]
print(arr / arr2) # [0.1 0.1 0.1]
# 비교 연산 가능 ==> 벡터 연산
arr = np.arange(10)
print(arr) # [0 1 2 3 4 5 6 7 8 9]
print(" 2의 배수냐? ", arr%2==0 ) # [ True False True False True False True False True False]
print(" 5보다 크냐? ", arr > 5 ) # [False False False False False False True True True True]
print(" 5보다 크고 짝수냐 ? ", (arr > 5) & (arr%2==0) ) # [False False False False False False True False True False]
print(" 5보다 크거나 짝수냐 ? ", (arr > 5) | (arr%2==0) ) # [ True False True False True False True True True True]
# 다차원 모두 벡터 연산이 가능하다. # 반드시 shape 일치해야 된다.
arr = np.arange(9).reshape(3,3)
arr2 = np.arange(10,19).reshape(3,3)
print(arr)
'''
[[0 1 2]
[3 4 5]
[6 7 8]]
'''
print(arr2)
'''
[[10 11 12]
[13 14 15]
[16 17 18]]
'''
print(arr + arr2)
'''
[[10 12 14]
[16 18 20]
[22 24 26]]
'''
print(arr + 10 )
'''
[[10 11 12]
[13 14 15]
[16 17 18]]
'''