一、了解scipy的特点:
- 优化:Scipy包括了各种数学优化算法,可以用于寻找函数的最小值或最大值。
- 信号处理:Scipy提供了一系列信号处理工具,用于分析和处理信号数据。
- 统计分析:Scipy包括了各种统计分析函数,用于描述和分析数据的统计特性。
- 插值:Scipy提供了插值函数,用于估计在给定数据点之间的值。
- 线性代数:Scipy包括了线性代数工具,用于解决线性方程组和矩阵分解等问题。
总结:方便了优化、信号处理、统计、差值等计算。
二、scipy特定的应用
(一)数学优化:寻找最优解
1.导入minimize函数
from scipy.optimize import minimize
2.优化
def objective(x):
return x[0] ** 2 + x[1] ** 2
# 初始猜测,给算法提供一个搜索起点
x0 = [1, 1]
(1)无约束优化
# 执行无约束优化
#result = minimize(objective, x0, method='BFGS') # 拟牛顿方法寻找最小值
(2)约束优化
#约束条件的形式,'ineq'代表线性不等式约束,'fun'包含的是线性不等式的约束条件,x0>=2
consraint = (
{'type': 'ineq', 'fun': lambda x: x[0] - 2},
{'type': 'ineq', 'fun': lambda x: x[1] - 2}
)
#执行约束优化
result = minimize(objective, x0, method = 'SLSQP', constraints = consraint)
(二)统计分析
1导入统计模块:stats
from scipy import stats
2 假设检验
data1 = numpy.random.normal(0, 1, 100)
data2 = numpy.random.normal(0, 1, 100)
#执行独立样本t检验
t_statistic, p_value = stats.ttest_ind(data1, data2)
3 统计分布
# 创建一个正态分布随机变量
rv = stats.norm(loc=0, scale=1)
# 计算概率密度函数的值
pdf_value = rv.pdf(0)
# 计算累积分布函数的值
cdf_value = rv.cdf(0.5)
(三)插值
1 导入差值模块:interpolate
from scipy import interpolate
2 差值方法
(1)线性插值:interp1d
x = np.array([0, 1, 2, 3, 4])
y = np.array([0, 1, 4, 9, 16])
#创建线性插值的函数
linear_interp = interpolate.interp1d(x, y)
new_x = np.array([0.5, 2.5])
interpolate_values = linear_interp(new_x)
(2)可视化展现
fig = plt.figure()
plt.scatter(x, y,c='r')
plt.scatter(new_x,new_y,c='b')
plt.show()
(3)结果展示:
小白对scipy的初步学习,欢迎各位大佬走过路过补充知识,互相学习~~~
参考:
https://www.jb51.net/python/3048161cl.htm
目录