Scipy高级科学计算库:和Numpy联系很密切,Scipy一般都是操控Numpy数组来进行科学计算、统计分析,所以可以说是基于Numpy之上了。Scipy有很多子模块可以应对不同的应用,例如插值运算,优化算法等等。SciPy则是在NumPy的基础上构建的更为强大,应用领域也更为广泛的科学计算包。正是出于这个原因,SciPy需要依赖NumPy的支持进行安装和运行。
Scipy是世界上著名的Python开源科学计算库,建立在Numpy之上。它增加的功能包括数值积分、最优化、统计和一些专用函数。 SciPy函数库在NumPy库的基础上增加了众多的数学、科学以及工程计算中常用的库函数。例如线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等等。
Scipy是基于Numpy构建的一个集成了多种数学算法和方便的函数的Python模块。通过给用户提供一些高层的命令和类,SciPy在python交互式会话中,大大增加了操作和可视化数据的能力。通过SciPy,Python的交互式会话变成了一个数据处理和一个system-prototyping环境,足以和MATLAB,IDL,Octave,R-Lab,以及SciLab抗衡。 更重要的是,在Python中使用SciPy,还可以同时用一门强大的语言————Python来开发复杂和专业的程序。用SciPy写科学应用,还能获得世界各地的开发者开发的模块的帮助。从并行程序到web到数据库子例程到各种类,都已经有可用的给Python程序员了。这些强大的功能,SciPy都有,特别是它的数学库。
Scipy是在Python的NumPy扩展上构建的数学算法和方便函数的集合。它通过为用户提供高级命令和类来操作和可视化数据,为交互式Python会话添加了强大的功能。有了SciPy,交互式Python会话就变成了一个数据处理和系统原型环境,可以与MATLAB、IDL、Octave、R-Lab和SciLab等系统相匹敌。
以Python为基础的SciPy的另一个好处是,它还提供了一种强大的编程语言,可用于开发复杂的程序和专门的应用程序。使用SciPy的科学应用程序受益于世界各地的开发人员在软件领域的许多小众领域中开发的附加模块。从并行编程到web和数据库的子例程和类,Python程序员都可以使用。除了SciPy中的数学库之外,所有这些功能都是可用的
# coding:utf-8 import numpy asnp from scipyimport constants as C from scipyimport linalg from scipyimport integrate fromscipy.interpolate import interp1d importmatplotlib.pyplot as plt
1.获得常数
def get_const(): print("圆周率:\n",C.pi) print("黄金分割率:\n",C.golden) print("真空中的光束:\n",C.c) print("普朗克常数:\n",C.h) print("一英里等于多少米:\n",C.mile) print("一英寸等于多少米:\n",C.inch) print("一度等于多少弧度:\n",C.degree) print("一分钟等于多少秒:\n",C.minute) print("标准重力加速度:\n",C.g)
圆周率:
3.141592653589793
黄金分割率:
1.618033988749895
真空中的光束:
299792458.0
普朗克常数:
6.62607015e-34
一英里等于多少米:
1609.3439999999998
一英寸等于多少米:
0.0254
一度等于多少弧度:
0.017453292519943295
一分钟等于多少秒:
60.0
标准重力加速度:
9.80665
2.求线性方程组解
defsystem_of_linear_equations(): #2x + y = 5 #3x -4y = -9 a = np.array([[2,1],[3,-4]]) b = np.array([5,-9]) x,y = np.round(linalg.solve(a,b)) print("x=",x,"y=",y) #x= 1.0 y= 3.0 #2x + y +z = 8 #3x -4y +2z= -3 #x + y + z = 7 a = np.array([[2,1,1],[3,-4,2],[1,1,1]]) b = np.array([8,-3,7]) x,y,z = np.round(linalg.solve(a,b)) print("x=",x,"y=",y,"z=",z) #x= 1.0 y= 3.0 z= 3.0
3.矩阵运算
defmatrix_operation(): A = np.array([[2,3],[4,5]]) #3.1 矩阵绝对值 #|A| = det(A) = 2*5-3*4 = 10-12=-2 x = linalg.det(A) print("A的矩阵行列式",x) #A的矩阵行列式 -2.000000000000001 #3.2矩阵的逆矩阵 iA = linalg.inv(A) print("A的矩阵的逆矩阵",iA) #A的矩阵的逆矩阵 [[-2.5 1.5] # [ 2. -1. ]] #设A是一个n阶矩阵,若存在另一个n阶矩阵B,使得:AB=BA=E ,则称方阵A可逆,并称方阵B是A的逆矩阵 #3.3矩阵的特征值和特征向量 λ, v = linalg.eig(A) print("A的矩阵的特征值",λ) #设 A 是n阶方阵,如果存在数m和非零n维列向量 x,使得 Ax=mx 成立,则称 m 是矩阵A的一个特征值(characteristic value)或本征值(eigenvalue)。 #A的矩阵的特征值 [-0.27491722+0.j 7.27491722+0.j] print("A的矩阵的特征向量",v) #A的矩阵的特征向量 [[-0.79681209 -0.49436913] # [ 0.60422718 -0.86925207]]
4.数值积分
#半圆看做对y的积分,y=(1-x^2)^0.5 defhalf_circle(x): return (1-x**2)**0.5 #z=(1-x^2-y^2)^0.5 defhalf_sphere(x,y): return (1-x**2-y**2)**0.5 defnumerical_integration(): #单位圆的面积:x^2+y^2 = 1 pi_half, err = integrate.quad(half_circle,-1,1)#err为误差 #integrate.quad(f,from,end)f:求积分的函数名,[from,end]: 积分区间 print("半圆面积:",pi_half,"误差:",err) print("2*pi_half:",2*pi_half) #半圆面积: 1.5707963267948983 误差: 1.0002354500215915e-09 #2*pi_half: 3.1415926535897967 #单位球的体积 pi_sphere, err = integrate.dblquad(half_sphere,-1,1, lambda x:-half_circle(x), lambda x:half_circle(x)) print("2*pi_sphere",2*pi_sphere) #2*pi_sphere 4.188790204786397
5.差值运算
definterpolation(): x = np.linspace(0,10,num=11,endpoint=True) y = np.cos(x) f1 = interp1d(x,y,kind='linear') f2 = interp1d(x,y,kind='cubic') xnew = np.linspace(0,10,num=41,endpoint=True) plt.plot(x,y,'o',xnew,f1(xnew),'-',xnew,f2(xnew),'--') plt.legend(['data','linear','cubic'],loc='best') plt.show()
classscipy.interpolate.interp1d(x, y, kind='linear', axis=-1, copy=True,bounds_error=None, fill_value=nan, assume_sorted=False)
参数 |
值 |
介绍 |
x |
(N,) array_like |
一维数据 |
y |
(…,N,…) array_like |
N维数据,其中插值维度的长度必须与x长度相同 |
kind |
str or int, optional |
给出插值的样条曲线的阶数 'zero' 'nearest':零阶 'slinear' 'linear':线性 'quadratic' 'cubic':二阶和三阶样条曲线,更高阶的曲线可以直接使用整数值指定 |
axis |
int, optional |
指定y中插值的轴,默认是y的最后一维 |
copy |
bool, optional |
如果True(default)类内置x和y的备份 |
bounds_error |
bool, optional |
如果True(Default),在插值过程中超出x的范围就会报错ValueError; 如果False,超界的值由fill_value指定。 默认是True,除非fill_value='extrapolate' |
fill_value |
array-like or (array-like, array_like) or “extrapolate”, optional assume_sortedbool, optional |
if__name__=="__main__": get_const() system_of_linear_equations() matrix_operation() numerical_integration() interpolation()
————————————————————————————————
软件安全测试
https://study.163.com/course/courseMain.htm?courseId=1209779852&share=2&shareId=480000002205486
接口自动化测试
https://study.163.com/course/courseMain.htm?courseId=1209794815&share=2&shareId=480000002205486
DevOps 和Jenkins之DevOps
https://study.163.com/course/courseMain.htm?courseId=1209817844&share=2&shareId=480000002205486
DevOps与Jenkins 2.0之Jenkins
https://study.163.com/course/courseMain.htm?courseId=1209819843&share=2&shareId=480000002205486
Selenium自动化测试
https://study.163.com/course/courseMain.htm?courseId=1209835807&share=2&shareId=480000002205486
性能测试第1季:性能测试基础知识
https://study.163.com/course/courseMain.htm?courseId=1209852815&share=2&shareId=480000002205486
性能测试第2季:LoadRunner12使用
https://study.163.com/course/courseMain.htm?courseId=1209980013&share=2&shareId=480000002205486
性能测试第3季:JMeter工具使用
https://study.163.com/course/courseMain.htm?courseId=1209903814&share=2&shareId=480000002205486
性能测试第4季:监控与调优
https://study.163.com/course/courseMain.htm?courseId=1209959801&share=2&shareId=480000002205486
Django入门
https://study.163.com/course/courseMain.htm?courseId=1210020806&share=2&shareId=480000002205486
啄木鸟顾老师漫谈软件测试
https://study.163.com/course/courseMain.htm?courseId=1209958326&share=2&shareId=480000002205486