[NumPy] 06. 다양한 수학 함수의 사용법과 활용
Updated:
import numpy as np
6.1. 삼각함수, 지수함수, 로그함수
상수
- np.pi: 원주율
- np.e: 자연상수
삼각함수
- np.deg2rad(x): degree를 radian 값으로 변경함
- np.rad2deg(x): radian 값을 degree로 변경함
- np.sin(x), np.cos(x), np.tan(x): 삼각함수 / radian 값을 사용해야 정확하게 나오기 때문에 np.deg2rad() 메소드도 보통 같이 이용한다.
- np.sinh(x), np.cosh(x), np.tanh(x): 쌍곡선함수
제곱, 제곱근, 세제곱근
- np.square(x), x ** 2 : 제곱
- np.sqrt(x), x ** (1/2) : 제곱근
- np.cbrt(x), x ** (1/3) : 세제곱근
지수함수
- np.reciprocal(x), x ** (-1) : 분수함수
- np.power(a,x), a ** x : 밑이 a인 지수함수 표현
- np.exp(x): 밑이 자연상수인 지수함수
로그함수
- np.log(x): 밑이 자연상수인 로그함수
- np.log(x) / np.log(num) : 밑이 num인 로그함수
PI = np.pi
e = np.e
print("PI:",PI, "e:",e)
PI: 3.141592653589793 e: 2.718281828459045
deg = np.array([30,45,60,90,180,270,360])
x = np.deg2rad(deg)
sin = np.sin(x)
cos = np.cos(x)
tan = np.tan(x)
print("sin(x):",sin.round(2))
print("cos(x):",cos.round(2))
print("tan(x):",tan.round(2))
sin(x): [ 0.5 0.71 0.87 1. 0. -1. -0. ]
cos(x): [ 0.87 0.71 0.5 0. -1. -0. 1. ]
tan(x): [ 5.80000000e-01 1.00000000e+00 1.73000000e+00 1.63312394e+16
-0.00000000e+00 5.44374645e+15 -0.00000000e+00]
x = np.random.uniform(0,5,(5,))
print("x**2:",x**2)
print("square(x):",np.square(x),'\n')
print("x**(1/2):",x**(1/2))
print("sqrt(x):",np.sqrt(x),'\n')
print("x**(1/3):",x**(1/3))
print("cbrt(x):",np.cbrt(x),'\n')
x**2: [ 0.02335131 22.27911182 4.58313967 12.14843097 0.17909837]
square(x): [ 0.02335131 22.27911182 4.58313967 12.14843097 0.17909837]
x**(1/2): [0.39091092 2.17257345 1.46315647 1.86693865 0.65053835]
sqrt(x): [0.39091092 2.17257345 1.46315647 1.86693865 0.65053835]
x**(1/3): [0.53462821 1.67745024 1.28882469 1.51618908 0.75078445]
cbrt(x): [0.53462821 1.67745024 1.28882469 1.51618908 0.75078445]
a = np.random.uniform(0,5,(5,))
x = np.random.uniform(0,5,(5,))
print("1/x:",(1/x).round(3))
print("reciprocal(x):",np.reciprocal(x).round(3),'\n')
print("a ** x:",(a**x).round(3))
print("power(a,x):",np.power(a,x),'\n')
print("e ** x:",(np.e ** x).round(3))
print("exp(x):",np.exp(x).round(3))
1/x: [1.36 0.775 0.643 0.257 0.237]
reciprocal(x): [1.36 0.775 0.643 0.257 0.237]
a ** x: [ 2.661 3.723 7.326 364.485 0.823]
power(a,x): [ 2.66103769 3.72326252 7.32572595 364.48456648 0.82296119]
e ** x: [ 2.086 3.635 4.731 48.658 67.947]
exp(x): [ 2.086 3.635 4.731 48.658 67.947]
a = np.random.uniform(2,10,(5,))
b = np.random.uniform(2,10,(5,))
loga = np.log(a)
logb = np.log(b)
logab = np.log(a*b)
print("loga + logb:",loga + logb)
print("logab:",logab,'\n')
loga + logb: [1.65438164 3.84383101 3.32686823 3.08913281 3.1804505 ]
logab: [1.65438164 3.84383101 3.32686823 3.08913281 3.1804505 ]
6.2. 벡터의 내적, 행렬곱
- np.dot(x,y): x와 y의 내적 결과
- np.matmul(a,b): a와 b의 행렬 곱을 나타냄
a = np.random.randint(1,5,(3,))
b = np.random.randint(1,5,(3,))
m1 = np.random.randint(1,12,(3,4))
m2 = np.random.randint(1,12,(4,3))
print("a:",a)
print("b:",b)
print("dot:",np.dot(a,b),'\n')
print("m1:\n",m1)
print("m2:\n",m2)
print("matrix multiplication:\n",np.matmul(m1,m2))
a: [3 4 2]
b: [2 4 3]
dot: 28
m1:
[[4 2 2 2]
[2 1 5 8]
[4 5 9 5]]
m2:
[[ 3 11 3]
[ 7 9 1]
[ 9 1 7]
[ 8 6 3]]
matrix multiplication:
[[ 60 76 34]
[122 84 66]
[168 128 95]]
Leave a comment