1、第3章 Python编程简介主要内容 Python简介 IPython及其使用 数据结构 程序控制 脚本 输入、输出与可视化Python简介 Why Python Python is powerful.and fast;plays well with others;runs everywhere;is friendly&easy to learn;is Open.These are some of the reasons people who use Python would rather not use anything else.-https:/www.python.org/about/下
2、载 https:/www.python.org/downloads/Looking for Python with a different OS?Python for Windows,Linux/UNIX,Mac OS X,Other.Python简介 包管理PyPI 查看pip版本(一般自带)pip version 安装pippython -m ensurepip -default-pip 或者下载 get-pip.py,并执行python get-pip.py 确保安装工具版本最新python-m pip install-upgrade pip setuptools wheelPython
3、简介 包管理PyPI 安装 To install the latest version of“SomeProject”:pip install SomeProject To install a specific version:pip install SomeProject=1.4 To install greater than or equal to one version and less than another:pip install SomeProject=1,=1.4.2”.Python简介 包管理PyPI 安装 Install from an alternate indexpip
4、 install-index-url http:/my.package.repo/simple/SomeProject 更新pip install-upgrade SomeProject Python简介 Anaconda 一个开源的Python发行版https:/ Winpython Windows下的一个Python发行版Python简介 IDE(Integrated Development Environment)PyCharmhttps:/ NotebookAnaconda自带 SpyderWinpython、Anaconda自带 IDLEWinpython、anaconda自带 IP
5、ython及其使用 IPython控制台 IPython是一个交互式Python开发环境。主要的Python开发环境,例如Anaconda等,都包含了IPython。用户可以利用其方便地进行开发。Python 3.4.4(v3.4.4:737efcadf5a6,Dec 20 2015,20:20:57)MSC v.1600 64 bit(AMD64)Type copyright,credits or license for more information.IPython 5.8.0-An enhanced Interactive Python.?-Introduction and overv
6、iew of IPythons features.%quickref-Quick reference.help -Pythons own help system.object?-Details about object,use object?for extra details.In 1:IPython及其使用 语句与表达式 a=5 程序由一系列这样的拥有不同功能的语句构成,从而可以执行各种复杂的操作。表达式由常量(如5)、变量名(如a,每个变量都有自己的变量名)和操作符(如=,代表赋值)和函数(实现定义好的可以完成一系列操作的功能模块,有名字,即函数名,可以通过函数名调用)。IPython及其
7、使用 语句与表达式(1)常量 Python支持整型、浮点型、复数、布尔型、字符串、列表等不同数据类型。某个数据的值如果是显式给出的,就是常量,如23,12.12,2+3j,True或False,Python for AI等等。常量可被用于赋值、计算、比较等不同操作,但常量本身的值不能被改变。(2)变量 在程序执行过程中其值可以变化的量是变量。每个变量都有变量名,用来在程序中引用变量。变量命名必须遵循一定的规则,例如不能以数字开头,不能有空格和句点,不能使用Python中的保留字,例如from、import、if、for、print等,而且Python中变量名是大小写敏感的。变量可以被赋值,但是
8、常量不能被赋值。IPython及其使用 语句与表达式(3)算术操作 Python支持加减乘除和幂运算等算术运算,分别使用+,-,*,/和*等运算符。IPython及其使用 语句与表达式(4)注释 Python支持两类注释,分别面向行的和面向程序块。#用于行注释,若代码中出现#,其后的内容即为注释内容,不被解释器解释执行。一对三个单引号组()或者双引号组(”)把括在其中的行进行注释。IPython及其使用 语句与表达式(5)函数 当实现某一特定功能的代码在程序中要多次使用时,可以定义函数。当程序中需要实现该功能时调用这个函数就可以了。一个函数的结构 函数的定义主要包括三部分,函数名、函数体和返回
9、值。IPython及其使用 语句与表达式(5)函数IPython及其使用 语句与表达式(5)错误信息 程序会有语法或者逻辑上的错误,因此错误信息提示对程序员很重要。Python有警告(Warning)和错误(Error)两类错误信息。警告一般不影响程序运行,但错误会导致程序无法继续运行。IPython及其使用 模块 Python有健全的开原生态系统支撑。有大量功能丰富、强大的软件库(例如数值计算库NumPy、科学计算库SciPy,绘图库Matplotlib等)。这些程序以模块的形式提供并被使用 使用时,需要使用import等关键字导入。IPython及其使用 模块 Import numpy只是
10、导入numpy包,要调用其中的开方函数需要使用numpy.sqrt()。可以利用关键字as给包起一个别名,例如其中的np。也可以指定要导入的函数,例如from numpy import sqrt,exp,即导入其中的开放函数sqrt()和底为自然对数的幂函数exp(),这时就不需要指出包名或者其别名,而直接调用即可。In 16:import numpyIn 17:numpy.sqrt(4)Out17:2.0In 18:import numpy as npIn 19:np.sqrt(4)Out19:2.0In 20:from numpy import sqrt,expIn 21:sqrt(4)O
11、ut21:2.0In 22:exp(3)Out22:20.085536923187668数据结构 程序中的数据以一定的方式被组织在一起。常见的数据结构包括对象,列表和数组。对象 对象是数据和函数的组合体,数据用来表征对象的静态属性,简称属性;函数用来表征对象的动态属性,例如属于对象的各类操作,一般称为方法。In 33:f=3.14In 34:f.is_integer()Out34:False In 35:s=This is a string.In 36:s.upper()Out36:THIS IS A STRING.数据结构 列表 列表(List)是一系列对象的有序集合。可以将任意一个对象集合
12、使用方括号括起来,创建一个列表对象。In 3:l=3.14,4,2+1j,c,string,1,2,3In 4:l0Out4:3.14In 5:l1Out5:4In 6:l2Out6:(2+1j)In 7:l3Out7:cIn 8:l4 Out8:stringIn 9:l5Out9:1,2,3In 10:l51Out10:2In 11:l2:4Out11:(2+1j),cIn 12:l-1Out12:1,2,3In 13:l3:Out13:c,string,1,2,3数据结构 列表 列表对象的函数 序号序号方法方法说明说明1 1list.append(x)将一个元素追加到列表的结尾。2 2li
13、st.extend(L)将一个给定列表中的所有元素都追加到另一个列表中。3 3list.insert(i,x)在指定位置 I 插入一个元素x。4 4list.remove(x)删除列表中值为 x 的第一个元素。5 5list.pop(i)从列表的指定位置删除元素,并将其返回。6 6list.clear()从列表中删除所有元素。7 7list.count(x)返回 x 在列表中出现的次数。8 8list.index(x)返回列表中第一个值为 x 的元素的索引。9 9list.sort()列表中的元素进行排序。1010list.reverse()列表元素倒排序。1111list.copy()返回列
14、表的一个拷贝。数据结构 数组 Python并没有内置专门的数组类型,但是数组在数值计算和人工智能领域应用非常广泛,因此NumPy包提供了数组类型及相应的高效操作。为了使用数组,需要导入numpy模块。(1)创建数组 数组一般由相同类型的一组数组成,其中的每个数称为元素(Entry),数组可以是一维的,也可以是高维的。In 1:import numpy as npIn 8:a=np.zeros(5)In 9:aOut9:array(0.,0.,0.,0.,0.)In 10:a=np.zeros(2,4)In 11:aOut11:array(0.,0.,0.,0.,0.,0.,0.,0.)In 1
15、4:a=a=np.zeros(2,3,4)In 15:a Out15:array(0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.)数据结构 数组(2)数组元素赋值 利用NumPy包中的array()、arange()和linspace()等函数进行赋值。In 18:a=np.array(1.57,3.14,6.28)In 19:aOut19:array(1.57,3.14,6.28)In 20:b=np.array(1.57,3.14,6.28,0.5,1.,2.)In 22:bOut22:arra
16、y(1.57,3.14,6.28,0.5,1.,2.)数据结构 数组(2)数组元素赋值 利用NumPy包中的array()、arange()和linspace()等函数进行赋值。In 24:a=np.arange(0,5,0.5)In 25:aOut25:array(0.,0.5,1.,1.5,2.,2.5,3.,3.5,4.,4.5)In 30:a=np.linspace(0,5,10)In 31:aOut31:array(0.,0.55555556,1.11111111,1.66666667,2.22222222,2.77777778,3.33333333,3.88888889,4.444
17、44444,5.)数据结构 数组(3)数组元素访问 可以通过指定索引的方式访问,Python中,索引值从0开始。In 32:a=np.array(1.57,3.14,6.28,.:0.5,1.,2.)In 33:a0Out33:array(1.57,3.14,6.28)In 34:a0,1Out34:3.14In 35:a1,2Out35:2.0In 36:a0,2=9.52数据结构 数组(3)数组元素访问 数组切片用于从数组中抽取出多个元素,语法为a起始索引:终止索引:步长。切片操作既可以用于一维数组,也可以应用于高维数组。In 67:a=np.arange(0,10,1)In 68:aOu
18、t68:array(0,1,2,3,4,5,6,7,8,9)In 69:a2:8:2Out69:array(2,4,6)In 70:a:5Out70:array(0,1,2,3,4)a5:Out71:array(5,6,7,8,9)数据结构 数组(4)数组整体操作 利用hstack()和vstack()函数,可以实现两个数组可以水平或者垂直堆叠。ravel()和flatten()方法可以将高维数组重新打包成一维数组。reshape()函数可以在数组元素个数相同的情形下改变数组的形状。程序控制 分支结构 程序结构 程序的分支结构一般包括两部分,即条件判断语句和可能的执行语句。主要的语句形式是if
19、elifelse。In 3:if(a=1.0):.:print(Neuron is activated.).:elif(a=0.5&a=1):.:print(Neuron is activated.).:In 10:aOut10:0.006986772989221901In 16:if(a=1):.:print(Neuron is activated.).:else:.:print(Neuron is not activated.).:Neuron is not activated.程序控制 分支结构(2)条件表达式和布尔型数据类型 进行跟在if和elif后括号里进行条件判断的语句主要由条件表
20、达式组成。条件表达式返回一个布尔值True(真)或False(假),表示条件满足与否。序号序号运算符运算符使用使用含义含义1 1=a=b如果a和b相等,返回True,否则返回False2 2!=a!=b如果a和b不相等,返回True,否则返回False3 3a b如果a大于b,返回True,否则返回False4 4=a=b如果a大于等于b,返回True,否则返回False5 5a b如果a小于b,返回True,否则返回False6 6=a=1.0):.:print(Neuron is activated.).:elif(a=0.5&a=1):.:print(Neuron is activate
21、d.).:In 10:aOut10:0.006986772989221901In 16:if(a=1):.:print(Neuron is activated.).:else:.:print(Neuron is not activated.).:Neuron is not activated.程序控制 循环结构 循环结构一般也有循环条件和循环体两部分构成。Python支持两种类型的循环,分别是for循环和while循环。for循环for ele in range(0,5,1):.:b=ele*3+1 .:print(ele,b).:(0,1)(1,2)(2,9)(3,28)(4,65)In 4
22、:a=np.arange(0,3,0.5)In 5:for ele in a:.:b=ele*3+1 .:print(ele,b).:(0.0,1.0)(0.5,1.125)(1.0,2.0)(1.5,4.375)(2.0,9.0)(2.5,16.625)程序控制 循环结构 while循环i=0while(i*i listj+1:listj,listj+1=listj+1,listj return list print(冒泡排序)list=BubbleSort()print(list)脚本 脚本执行 保存的代码可以使用多种方式执行。在IPython控制台中,可以使用%run命令执行保存的纯文本
23、的Python脚本。也可以直接调用解释器程序执行。In 5:%run d:AIch03BubbleSort.py冒泡排序1,2,5,8,66,123D:AI python3 .BubbleSort.py冒泡排序 1,2,5,8,66,123$python3 ./BubbleSort.py冒泡排序1,2,5,8,66,123输入、输出与可视化 输入输出 为了能够永久保存程序、数据等,计算机系统将这些信息按一定方式组织起来进行存储,称之为文件。Python中,文件使用一般包括三个步骤,即打开,使用(读取或者写入)和关闭。输入、输出与可视化 输入输出 打开文件In 5:f=open(ex01.csv
24、,r)In 6:fOut6:In 8:f.nameOut8:ex01.csvIn 9:f.modeOut9:rIn 10:f.closedOut10:False输入、输出与可视化 输入输出 取文件In 11:st=f.read()In 12:stOut12:1,2,3,4,Hellon5,6,7,8,Worldn9,10,11,12,FoonIn 13:st=f.read()In 14:stOut14:f.seek(0,0)In 22:st=f.read(20)In 23:stOut23:1,2,3,4,Hellon5,In 24:f.seek(0,0)In 25:st=f.readline(
25、)In 26:stOut26:1,2,3,4,Hellon输入、输出与可视化 输入输出 关闭文件 写文件In 27:f.close()In 28:f.closedOut28:TrueIn 34:f=open(ex02.csv,w)In 35:f.write(1,2,3nWrite example.)In 36:!type ex02.csv In 37:f.close()In 38:!type ex02.csv1,2,3 Write example.输入、输出与可视化 可视化 绘图是数据分析的重要的任务之一,图像可以直观地反映变化趋势、分布规律和相互关系等,因此经常需要将数据以图形化的方式展示。
26、Python没有内置绘图函数,但Matplotlib包的PyPlot模块提供了丰富的绘图函数。In 32:import matplotlib.pyplot as pltIn 49:n_point=10In 50:x_min,x_max=0,6In 51:x_v=np.linspace(x_min,x_max,n_point)In 52:y_v=x_v*2In 53:plt.plot(x_v,y_v)Out53:In 54:plt.show()输入、输出与可视化 可视化 更复杂的折线图In 62:plt.title(The Second Plot)Out62:In 63:plt.xlabel(T
27、ime)Out63:In 64:plt.ylabel(Speed)Out64:In 65:plt.show()输入、输出与可视化 可视化 直方图In 67:plt.hist(np.random.randn(100),bins=20,color=k,alpha=0.3)Out67:(array(1.,2.,2.,1.,2.,5.,9.,8.,15.,7.,10.,7.,6.,13.,1.,5.,2.,2.,1.,1.),array(-2.68546099,-2.42551553,-2.16557008,-1.90562462,-1.64567917,-1.38573372,-1.12578826,-0.86584281,-0.60589735,-0.3459519,-0.08600645,0.17393901,0.43388446,0.69382992,0.95377537,1.21372082,1.47366628,1.73361173,1.99355718,2.25350264,2.51344809),)In 68:plt.show()输入、输出与可视化 可视化 散点图In 69:plt.scatter(np.arange(30),np.arange(30)+3*np.random.randn(30)Out69:In 70:plt.show()