Scipy
丹丹

数据物理常数

1
2
3
4
5
6
7
from scipy import constants

# 圆周率
print(C.pi)

# 引力常数
print(C.g)
3.141592653589793
9.80665

积分

1
2
3
4
5
6
7
8
9
10
11
from scipy import integrate

# 定积分
Y = lambda x: x**2+3
print(integrate.quad(Y, -2, 4)) # (-2, 4)是上下限 # 返回值第二个是误差预估

# 数值采样积分
Y = lambda x: x**2+3
x = np.linspace(-2, 4, 10)
y = Y(x)
print(integrate.trapz(y, x))
(42.0, 4.662936703425657e-13)
42.44444444444444

优化

1
2
3
4
5
6
7
from scipy import optimize
Y = lambda x: x[0]**3 + x[1]**3 + np.cos(x[2]+1)
x0 = np.zeros(4)
res = optimize.minimize(Y, x0)

print(res.x) #x
print(Y(res.x)) #y
[0.         0.         2.14159739 0.        ]
-0.9999999999887697

拟合

1
2
3
4
5
6
7
8
9
from scipy import optimize
def func(x, a, b, c):
return a * np.exp(-b * x) + c

x = np.linspace(0, 4, 50)
y = func(x, 1, 2, 3)

popt, pcov = optimize.curve_fit(func, x, y)
popt
array([1., 2., 3.])

方程式求解

1
2
3
4
5
6
from scipy import optimize
def func(x):
return [x[0]+x[1],x[0]+10]

sol = optimize.root(func, [0, 0])
sol.x
array([-10.,  10.])

参考:

  1. 从机器学习到深度学习:基于Scikit-learn与TensorFlow的高效开发实战