이수안컴퓨터연구소의 NumPy 한번에 끝내기 영상을 보고 정리한 내용입니다.
✅ 배열 연산
NumPy의 배열 연산은 벡터화 연산(vectorized)을 사용한다.
일반적으로 NumPy의 범용 함수(universal functions)를 통해 구현하며 배열 요소에 대한 반복적인 계산을 효율적으로 수행할 수 있다.
✅ 브로드캐스팅
브로드캐스팅(Broadcasting)은 NumPy가 산술 연산 중 다른 모양의 배열을 처리하는 방법이다.
특정 제약 조건에 따라 더 작은 array는 호환되는 모양을 갖도록 더 큰 array에 대해 브로드캐스팅된다.
즉, 산술 연산을 하고 싶은 두 피연산자 배열이 각기 다른 shape을 가지고 있어도 산술 연산을 할 수 있게끔 shape이 동일하게 맞춰진다.
a1 = np.array([1, 2, 3])
print(a1 + 5)
# output
# [6 7 8]
a2 = np.arange(1, 10).reshape(3,3)
print(a1)
print(a2)
print(a1 + a2)
# output
# [1 2 3]
# [[1 2 3]
# [4 5 6]
# [7 8 9]]
# [[ 2 4 6]
# [ 5 7 9]
# [ 8 10 12]]
b2 = np.array([1, 2, 3]).reshape(3,1)
print(a2)
print(b2)
print(a2 + b2)
# output
# [[1 2 3]
# [4 5 6]
# [7 8 9]]
# [[1]
# [2]
# [3]]
# [[ 2 3 4]
# [ 6 7 8]
# [10 11 12]]
✅ 산술 연산
NumPy에서의 산술 연산(Arithmetic Operators)은 연산자와 범용 함수 모두 사용 가능하다.
산술 연산의 연산자와 범용 함수는 다음과 같다.
연산자 | 범용함수 | 설명 |
+ | np.add |
덧셈 |
- | np.substract |
뺄셈 |
- | np.negative |
단항 음수 |
* | np.multiply |
곱셈 |
/ | np.divide |
나눗셈 |
// | np.floor_divide |
나눗셈 내림 |
% | np.mod |
나머지연산 |
** | np.power |
지수 연산 |
✔️ 절대값
절대값 함수로는 np.absolute()
가 있는데 이를 줄여서 np.abs()
로도 사용 가능하다.
a1 = np.random.randint(-10,10,size=5)
print(a1)
print(np.abs(a1))
# output
# [ -4 3 -9 8 -10]
# [ 4 3 9 8 10]
✔️ 제곱/제곱근
제곱 함수는 np.square()
이고 제곱근 함수는 np.sqrt()
이다.
a1 = np.arange(1,10)
print(np.square(a1))
print(np.sqrt(a1))
# output
# [ 1 4 9 16 25 36 49 64 81]
# [1. 1.41421356 1.73205081 2. 2.23606798 2.44948974 2.64575131 2.82842712 3. ]
✔️ 지수
지수 함수는 np.exp()
, np.exp2()
, np.expm1()
등 다양하게 존재하며 산술 연산에서 이용했던 np.power()
를 쓸 수도 있다.
- np.exp() : exponential 값을 구한다. 즉, e^n 값이다.
- np.exp2() : 2^n 값을 구한다.
- np.expm1() : exponential 값을 구한뒤 1을 뺀다. 즉, e^n-1이다.
a1 = np.random.randint(1, 10, size=5)
print(a1)
print(np.exp(a1))
print(np.exp2(a1))
print(np.expm1(a1))
# output
# [2 5 1 3 9]
# [7.38905610e+00 1.48413159e+02 2.71828183e+00 2.00855369e+01
# 8.10308393e+03]
# [ 4. 32. 2. 8. 512.]
# [6.38905610e+00 1.47413159e+02 1.71828183e+00 1.90855369e+01
# 8.10208393e+03]
✔️ 로그
로그 함수는 np.log()
, np.log2()
, np.log10()
등이 존재한다.
- np.log() : 자연 로그(nutural logarithm)값을 반환한다.
- np.log2() : 밑이 2인 로그 값을 반환한다.
- np.log10(): 밑이 10인 로그 값을 반환한다.
print(a1)
print(np.log(a1))
print(np.log2(a1))
print(np.log10(a1))
# output
# [2 5 1 3 9]
# [0.69314718 1.60943791 0. 1.09861229 2.19722458]
# [1. 2.32192809 0. 1.5849625 3.169925 ]
# [0.30103 0.69897 0. 0.47712125 0.95424251]
✔️ 삼각함수
삼각함수 관련 함수는 다양하게 존재한다.
함수 | 설명 |
np.sin() |
요소 별 사인 |
np.cos() |
요소 별 코사인 |
np.tan() |
요소 별 탄젠트 |
np.arcsin() |
요소 별 아크 사인 |
np.sinh() |
요소 별 하이퍼볼릭 사인 |
np.arcsinh() |
요소 별 하이퍼볼릭 아크 사인 |
np.deg2rad() |
요소 별 각도에서 라디안 변환 |
np.rad2deg() |
요소 별 라디안에서 각도 변환 |
np.hypot() |
요소 별 유클리드 거리 계산 |
🔍 참조
broadcasting https://numpy.org/doc/stable/user/basics.broadcasting.html
numpy.exp https://codetorial.net/numpy/functions/numpy_exp.html
'Python > NumPy' 카테고리의 다른 글
[NumPy] 배열 변환 - (2) (0) | 2022.02.02 |
---|---|
[NumPy] 배열 변환 - (1) (0) | 2022.01.24 |
[NumPy] 배열 값 삽입/수정/삭제/복사 (0) | 2022.01.24 |
[NumPy] 인덱싱과 슬라이싱 (0) | 2022.01.23 |
[NumPy] 배열 생성 - (2) (0) | 2022.01.23 |
댓글