您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 2Dpython进阶
你是否在电脑上成功安装anaconda3?已经安装好了有困难,没安装成功有电脑,但是没有安装没有电脑ABCD提交投票最多可选1项内容ImportmodulesNumpyScipyMatplotlibSympy导入模块(Importmodules)可以通过输入import关键字来导入模块importnumpy或者使用简称,即将模块通过as关键字来命名一个简称importnumpyasnp有时您不必导入整个模块,就像fromscipy.statsimportnorm练习(Exercise)尝试导入timeit模块,并使用它来获取计算机运行特定代码所需的时间。importtimeitdeffunl(x,y):returnx**2+y**3t_start=timeit.default_timer()z=funl(109.2,367.1)t_end=timeit.default_timer()cost=t_end-t_startprint('Timecostoffunlis%f'%cost)我们会遇到的模块NumPy:多维数组的有效操作。高效的数学函数。Matplotlib:可视化:2D和(最近)3D图SciPy:大型库实现各种数值算法,例如:线性和非线性方程的解优化数值积分Numpy•numpy(NumericalPythonextensions)是⼀个第三⽅的Python包,⽤于科学计算。这个库的前⾝是1995年就开始开发的⼀个⽤于数组运算的库。经过了长时间的发展,基本上成了绝⼤部分Python科学计算的基础包。ndarray类型NumPy提供了一种新的数据类型:ndarray(n维数组)。与元组和列表不同,数组只能存储相同类型的对象(例如只有floats或只有ints)这使得数组上的操作比列表快得多;此外,阵列占用的内存少于列表。数组为列表索引机制提供强大的扩展。创建ndarray导入Numpy:importnumpy然后我们创建numpy数组:In[1]:np.array([2,3,6,7])Out[l]:array([2,3,6,7])In[2]:np.array([2,3,6,7.])Out[2]:array([2.,3.,6.,7.])-HamogenaousIn[3]:np.array([2,3,6,7+ij])Out[3]:array([2.+O.j,3.+O.j,6.+O.j,7.+1.j])Example1importnumpyasnpa=np.array([1,3,4])b=np.array([3,2,5])c=a*b+1print(c)创建均匀间隔的数组range(start,stop,step)的所有三个参数即起始值,结束值,步长都是可以用的另外还有一个数据的dtype参数in[2]:np.arange(10,100,20,dtype=float)Out[2]:array([10.,30.,50.,70.,90.])linspace(start,stop,num)返回数字间隔均匀的样本,按区间[start,stop]计算:in[3]:np.linspace(0.,2.5,5)Out[3]:array([0.,0.625,1.25,1.875,2.5])range(start,stop,step)的所有三个参数即起始值,结束值,步长都是可以用的另外还有一个数据的dtype参数in[2]:np.arange(10,100,20,dtype=float)Out[2]:array([10.,30.,50.,70.,90.])linspace(start,stop,num)返回数字间隔均匀的样本,按区间[start,stop]计算:in[3]:np.linspace(0.,2.5,5)Out[3]:array([0.,0.625,1.25,1.875,2.5])Example2抛体运动的计算画出轨迹图Search查找y=cosx⼤于零的x,y值importnumpyasnpx=np.linspace(0,2*np.pi,50)y=np.cos(x)idx=np.where(y0)x=x[idx]y=y[idx]排序Sortimportnumpyasnpx=np.random.random(4)y=np.cos(np.pi*x)idx=np.argsort(x)x=x[idx]y=y[idx]多维数组矩阵(Matrixbymultidimensionalarray)In[1]:a=np.array([[1,2,3][4,5,6]])^第一行(Row1)In[2]:aOut[2]:array([[1,2,3],[4,5,6]])In[3]:a.shape#-行、列数等(Numberofrows,columnsetc.)Out[3]:(2,3)In[4]:a.ndim#-维度数(Numberofdimensions)Out[4]:2In[5]:a.size#-元素数量(Totalnumberofelements)Out[5]:6形状变化(Shapechanging)importnumpyasnpa=np.arange(0,20,1)#1维b=a.reshape((4,5))#4行5列c=a.reshape((20,1))#2维d=a.reshape((-1,4))#-1:自动确定#a.shape=(4,5)#改变a的形状Size(N,),(N,1)和(1,N)是不同的!!!Size(N,)表示数组是一维的。Size(N,1)表示数组是维数为2,N列和1行。Size(1,N)表示数组是维数为2,1行和N列。让我们看一个例子例子importnumpyasnpa=np.array([1,2,3,4,5])b=a.copy()c1=np.dot(np.transpose(a),b)print(c1)c2=np.dot(a,np.transpose(b))print(c2)ax=np.reshape(a,(5,1))bx=np.reshape(b,(1,5))c=np.dot(ax,bx)print(c)使用完全相同的元素填充数组In[1]:np.zeros(3)#zero(),全0填充数组Out[l]:array([O.,0.,0.])In[2]:np.zeros((2,2),complex)Out[2]:array([[0.+0.j,0.+0.j],[0.+O.j,0.+0.j]])In[3]:np.ones((2,3))#ones(),全1填充数组Out[3]:array([[1.,1.,1.],[1.,1.,1.]])使用随机数字填充数组rand:0和1之间均匀分布的随机数In[1]:np.random.rand(2,4)Out[1]:array([[0.373767,0.24377115,0.1050342,0.16582644],[0.31149806,0.02596055,0.42367316,0.67975249l])randn:均值为0,标准差为1的标准(高斯)正态分布In[2]:np.random.randn(2,4)Out[2]:array([[O.87747152,0.39977447,-0.83964985,-1.05129899],[-1.07933484,0.49448873,-1.32648606,-0.94193424]])其他标准分布也可以使用单位矩阵In[1]:np.eye(3)广播broadcastingCij=Ai+Bjimportnumpyasnpa=np.arange(5)b=np.arange(5,10)c=a[:,np.newaxis]+b[np.newaxis,:]print('a=',a,'\nb=',b,'\nc=\nc)Cikj=Aik∗BkjimportnumpyasnpA=np.random.random((10,12))B=np.random.random((12,3))print('A.shape=',A.shape)print('B.shape=',B.shape)C=A[np.newaxis,:,:]*B[np.newaxis,:,:]print('C.shape=',C.shape)数组切片(1D)以格式start:stop可以用来提取数组的片段(从开始到不包括stop)start可以省略,在这种情况下,它被设置为零(Notes:貌似留空更合适):stop也可以省略,在这种情况下它被设置为数组长度:也可以使用负指数,具有标准含义:整个数组:a或a[:]-1的这个步骤可用于反转数组:数组索引(2D)In[93]:a=np.arange(12);a.shape=(3,4);aOut[93]:array([[0,1,2,3],[4,5,6,7],[8,9,10,11]])In[94]:a[1,2]Out[94]:6In[95]:a[1,-1]Out[95]:7数组切片(2D)与列表完全相同In[96]:a=np.arange(12);a.shape=(3,4);aOut[96]:array([[0,1,2,3],[4,5,6,7],[8,9,10,11]])In[97]:a[:,1]Out[97]:array([1,5,9])In[98]:a[2,:]Out[98]:array([8,9,10,11])In[99]:a[1][2]Out[99]:6函数•exp,log,log10...•max,min,mean...•sum,prod,cumsum,cumprod•trapz,diff,gradient•dot,tensordot,cross,convolve•interp,diag点乘和叉乘importnumpyasnpa=np.array([1,2,3])b=np.array([3,4,5])c=np.dot(a,b)d=np.cross(a,b)print(c,d)微分•np.diff(f)求相邻元素之差;•np.gradient(f,[dx,dy,...])求各点的梯度。importnumpyasnpx=np.linspace(0,pi,100)y=np.sin(x)dx=x[1]-x[0]np.gradient(y,dx)积分•np.trapz(f,dx)梯形法求积分矩阵乘法运算符*表示元素乘法,而不是矩阵乘法In[1]:A=np.array([[1,2],[3,4]])In[2]:AOut[2]:array([[1,2],[3,4]])In[3]:A*AOut[3]:array([[1,4],[9,16]])使用dot()函数进行矩阵乘法In[4]:np.dot(A,A)Out[4]:array([[7,10],[15,22]])矩阵乘法dot()方法也适用于矩阵向量(matrix-vector)乘法In[1]:AOut[1]:array([[1,2],[3,4]])In[2]:x=np.array([10,20])In[3]:np.dot(A,x)Out[3]:array([50,110])In[4]:np.dot(x,A)Out[4]:array([70,100])线性代数numpy.linalg•norm(A),matrixorvectornorm(default2-norm)•det(A),determinantof2Dequaldimensionalarrays•solve(A,b),solveslineareq.Ax=b•qr(A),QR-factorization•inv(A),pinv(A),matrixinverseandpseudoinverse•eig(A),eigvals(A),eigh(A),eigvalsh(A),eigenvaluesand•eigenvectorsofA,hisfor
本文标题:2Dpython进阶
链接地址:https://www.777doc.com/doc-7465733 .html