赞
踩
本笔记是依据周浦城等教授编著的《深度卷积神经网络原理与实践》的个人笔记(Version:1.0.0)
整理作者:sq_csl
第四章 Python编程基础
1.Python官方网站下载IDLE(https://www.python.org/downloads/)
2.下载并安装Anaconda(https://www.anaconda.com/download/)
调用IPython、Jupyter Notebook
此处介绍的是Ubuntu的下载。
虽然Ubuntu有预装的Python,但安装的是Python 2.x版本,不过建议安装Python 3.x的同时仍然保留Python 2.x版本。
①打开终端,用wget命令到Python官网下载安装包:
wget http://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz
②使用tar命令对压缩包解压:
tar -xzvf Python-3.7.5.tgz
③解压完成后,会在当前目录下产生目录Python-3.8.1,使用cd命令切换到该目录下编译安装,依次输入以下命令:
cd Python-3.7.5
./configure -with-ssl
make
sudo make install
④接下来需要安装Python编译外部模块文件使用的Python-dev,输入以下命令:
sudo apt-get install python-dev
⑤最后,安装pip
sudo apt-get install python-pip
sudo pip3 install -upgrade pip
也可以直接安装Anaconda来更新Python,以2020.02版本为例:
sh Anaconda3-2020.02-Linux-x86_64.sh
通常遵循以下习惯:
1.变量、函数名中的英文字母一般小写,以增加程序可读性。
2.应该较好表达变量值的含义,一般选用相应的英文单词、拼音缩写的形式,尽量不用简单符号来命名。
3.尽量不用易混淆的单个字符,例如:0和o;1和l。
4.避免开头和结尾都用下划线的情况(由Python特性决定)
一般为4个空格,或者制表符(Tab)为基本缩进单位。
注意:上面这两个不能混用。
printf('Hello World!') #输出“Hello,World”。这个是单行注释
''
多行注释
''
'''
多行注释也可以这样
提示:注释和语句之间至少要用两个空格分开
'''
类型:int、float、complex(复数类型,虚部以i或j结尾)、bool(只有True和False两种)
用引号表示。
举例:
a='安徽省';
b='合肥市';
c='紫云路292号';
print(a+b+c)
安徽省合肥市紫云路292号
Tip:在Python中,input( )函数输入的内容都当成字符串,如果要当成数值类型处理都需要先进行数据类型的转换。转换成字符串:str( );转换成整数int()。
方法1:列表名=[值1,值2,…,值n]
方法2:list( )
举例1:
>>>list1=['r','g','b']; #定义了3个字符串的列表
>>>list2=list((1,2,3,4));
>>>list2
[1,2,3,4]
>>>list1[0]
'r'
与列表相关的函数:
①del或remove( ):删除
②pop( ):删除指定位置的元素
③append( ):列表末尾添加元素
④insert( ):插入指定位置
举例2:
>>>list1=['安徽','合肥',1958,2021]; >>>list1.append(2022); >>>print(list1) ['安徽','合肥',1958,2021,2022] >>>list1.insert(2,'蜀山'); >>>print(list1) ['安徽','合肥','蜀山',1958,2021,2022] >>>list1.remove(1); >>>print(list1) ['安徽','蜀山',1958,2021,2022] >>>year=list1.pop(2); >>>year 1958 >>>print(list1) ['安徽','蜀山',2021,2022]
方式1:元组名=(值1,值2,…,值n)
方式2:tuple( )函数创建元组
注意:元组中元素不允许被删除!可用del来删除整个元组。
举例1:
>>>tup1=(11,45,14);
>>>tup[2]
14
>>>tup2=(114,514);
>>>tup3=tup1+tup2;
>>>print(tup3)
(11,45,14,114,514)
对元组切片,可得一个新元组。
举例2:
>>>nums=[11,45,14,191,981,0];
>>>tup4=tuple(nums);
>>>print(tup4)
(11,45,14,191,981,0)
>>>tup5=tup4[1:5];
>>>print(tup5)
(45,14,191,981)
>>>del tup5
>>>print(tup5)
NameError:name 'tup5' is not defined
又称为关联数组或哈希表。
字典名={键1:值1 , 键2:值2 , … , 键n:值n}
语法格式:字典名[键]
举例:
>>>dict={'Name':'小明','Age':19,'Class':'ACM班'};
>>>print("dict['Name']:",dict['Name'])
dict['Name']: 小明
>>>dict['Age']=20;
>>>dict
{'Name':'小明','Age':20,'Class':'ACM班'}
>>>dict['Gender']='Male';
>>>dict
{'Name':'小明','Age':20,'Class':'ACM班','Gender':'Male'}
无序且元素不重复的序列。
方法一:集合名={元素1, 元素2, … ,元素n}
方法二:集合名=set(列表或元组)
可使用“-” “|” “&”运算符进行差集、并集、交集运算
举例:
>>>set1={1,2,3,4,5};
>>>print(set1)
{1,2,3,4,5}
>>>num={1,2,3,2,1};
>>>print(num)
{1,2,3}
>>>a=set('abcd');
>>>b=set('cdef');
>>>print("a和b交集:",a&b)
a和b交集:{'d','c'}
>>>print(a-b)
{'a','b'}
‘+’(加)’-’(减)’*’(乘) ‘/’(除)’//’(整除)’%’(求余数)
‘**’ (幂运算)
举例:
>>>2**10
1024
变量名=表达式
12种复合赋值运算符:+=、-=、*=、/=、//=、**=、|=、&=、^=、<<=、>>=。
用于两个值进行比较,运算结果为True(真)或False(假)。
常用关系运算符:==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)
举例:
>>>a=5;
>>>b=10;
>>>a==b
False
and(逻辑与) or(逻辑或) not(逻辑非)
按照二进制形式逐位进行运算。
&(按位与)、|(按位或)、^(按位异或)、~(按位求反)、<<(左移)、>>(右移)
>>>a=0b00111100;
>>>b=0b00001101;
>>>a&b
12
>>>bin(a|b)
'0b111101'
成员操作符判断序列中是否有某个成员,包括in、not in两种,返回值位True或False
举例:
>>>3 in [1,2,3]
True
>>>3 not in [1,2,3,4]
False
按照语句出现的先后顺序运行。
if、if-else、if-elif-else语句
提醒:请严格按照缩进规则!
if 表达式:
语句块
if 表达式:
语句块1
else:
语句块2
if 表达式1:
语句块1
elif 表达式2:
语句块2
...
elif 表达式n:
语句块n
else:
语句块n+1
for、while语句
for 循环变量 in 遍历结构:
语句块
while 表达式:
语句块
建议:为了保证可读性以及复杂度,建议循环嵌套层数不超过三层。
用关键字def,此时函数名后面的括号中的变量称为形式参数(简称形参)
函数只有被调用才会被执行,调用方式:函数名(形参表)。
def 函数名(形参表):
函数体
return 返回值
举例:(求阶乘)
def fac(n):
if (n==0 or n==1):
facc=1
else:
facc=n*fac(n-1)
return facc
n=int(input("Please input number n="))
print("n! =",facc(n))
Please input number n=10
n! =3628800
>>>dir(__builtins__) #查看所有的内置函数名
从键盘键入数据赋给变量(输入类型:字符串),括号内内容显示
使用方法:
变量=input("提示信息")
基本输出函数
使用方法:
print(表达式1,表达式2,表达式3,...,表达式n)
调用open( )函数打开文件
使用方法:
fileobj=open(filename[,mode[,buffering]])
说明:通过字符串filename来指定希望打开哪个路径下的文件名,并返回一个文件对象。
mode参数常用:‘r’(读模式),‘w’(写模式),‘a’(追加模式),‘b’(二进制模式)
方法1:采用不设置参数的read( )方法
方法2:采用readlines( )从文件中获取一个字符串,每个字符串就是文件中的每一行。
函数:write( )、writelines( )
注:为了确保数据一致性,写文件时不允许读取数据
举例:
>>>filename="c:/test.txt";
>>>file1=open(filename,"w",encoding='utf-8');
>>>file1.write("你好,世界!");
>>>contents=file1.readlines();
>>>print(contents)
['你好,世界!']
>>>file1.close(); #文件关闭
采用关键字import来导入某个模块,具体方式如下:
import 模块名
有时候只需要用到某个模块中某个函数或者某几个函数:
from 模块名 import 函数名1.函数名2...
使用*运算符可以导入所有函数
from 模块名 import *
可以采用关键字as来指定简短而独一无二的别名,类似于外号,如:
import numpy as np
全局变量与局部变量(略)
面向对象程序设计是上世纪80年代针对大型软件的设计而提出的一种计算机编程架构。
Python语言采用了面向对象程序设计的思想,遵循“万物皆为对象”的原则,完全支持面向对象的基本功能,如封装、继承、多态以及对基类方法的覆盖或重写,并且Python中的字符串、列表、字典、元组等内置数据类型都具有和类完全相似的语法和用法。
定义:
class 类名:
定义数据成员
定义成员函数
类名一般约定用大写字母开头,函数用小写字母开头。
定义类之后,就可以用来实例化一个对象。语法形式: 对象名=类名(实参表)
若要访问对象中的某个数据成员或成员函数,语法形式为:对象名.成员名。
构造函数的作用:为对象的数据成员赋初值,函数名固定为__init__。其中第1个参数固定为self,代表当前参与操作的对象本身。其他参数对应于类的数据成员,其数量与需要在构造函数中赋初值的数据成员的数量相同。
析构函数的作用:用于对象被撤销时释放其所占用的内存资源。
注:①定义类时一般要定义构造函数,以便为数据成员赋初值。
②构造函数在定义对象时会自动执行,但不能显式调用。
③可以不定义析构函数,不过此时将采用默认的析构函数。
class Circle: def __init__(self,r=10): self.__radius=r; def disp(self): print("半径={}".format(self.__radius)); def area(self): return 3.1416*self.__radius*self.__radius; def peri(self): return 2*3.1416*self.__radius; cir1=Circle(6); cir2=Circle(); cir1.disp(); print("面积={}".format(cir1.area())) print("周长={}".format(cir1.peri())) cir2.disp() print("面积={}".format(cir2.area())) print("周长={}".format(cir2.peri())) 半径=6 面积=113.0976 周长=37.6992 半径=10 面积=314.16 周长=62.832
private 和 public
注:①以一个_开头的是基类或派生类内受保护的成员。
②以≥2个_开头且不以2个或多个结束的是私有成员。
③其他的符合命名规则的标识符称为公有成员。
可区分为属于类的成员和属于对象的成员。
类成员既可以通过对象名访问,也可以通过类名访问。
对象成员只可以通过对象名访问。
举例:
class Circle: __total=666; #类成员 def __init__(self,r=10): self.__radius=r; #对象成员 def disp(self): print("半径={}".format(self.__radius)); def area(self): return 3.1416*self.__radius*self.__radius; def peri(self): return 2*3.1416*self.__radius; cir1=Circle(6); cir2=Circle(); print(Circle._Circle__total); #通过类名访问类成员 print(cir1._Circle__total); #通过对象名访问类成员 print(cir2._Circle__total); #同上 print(cir1._Circle__radius); #通过对象名访问对象成员 print(cir2._Circle__radius); #通过对象名访问对象成员 666 666 666 6 10
对象函数(对象方法)、类函数(类方法)、静态函数(静态方法)
Numpy是Python进行科学计算的基础软件包,主要提供了高性能的N维数组实现以及计算能力,还提供了和C、C++、Fortran等编程语言集成的能力,另外还实现了包括线性代数、傅里叶变换以及随机数生成等一些基础的算法。
NumPy最重要的一个特点是其N维数组对象ndarray,它是一系列同类型数据的集合,以0下标为开始进行集合中元素的索引。ndarray对象是用于存放同类型元素的多维数组,其中的每个元素在内存中都有相同存储大小的区域。
可从网站:https://www.scipy.org 下载
arange( ) 创建一位数组
创建高维数组可对arange( )函数输出的一维数组调用reshape( )函数进行变形。
zeros( ) 创建一个填充0的数组
ones( ) 创建一个填充1的数组
empty( ) 创建一个随机数数组
full( ) 创建一个填充定值的n×n数组
eyes( ) 创建一个n×n的单位阵
linspace( ) 在指定的间隔内返回均匀间隔的数字
举例:
方法1:基于0~n的下标直接进行索引
方法2:采用切片的方式,通过内置的slice( )函数,设置start、stop和step参数,对Numpy数组进行切片
Series(一维同构数组)
DataFrame(二维异构表格)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。