Python学习笔记
(1)阿里云 http://mirrors.aliyun.com/pypi/simple/
(2)豆瓣http://pypi.douban.com/simple/
(3)清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
(4)中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
(5)华中科技大学http://pypi.hustunique.com/
pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple +库名
(b) windows下,直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,然后新建文件pip.ini,即 %HOMEPATH%\pip\pip.ini,在pip.ini文件中输入以下内容(以豆瓣镜像为例):
[global]
index-url = http://pypi.douban.com/simple
[install]
trusted-host = pypi.douban.com
创建pip.ini文件可以用文本编辑器,例如 sublime text3。
规则:大小写字母、数字、下划线和汉字等字符组成
注意:大小写敏感、首字母不能是数字、不与保留字相同
保留字:被编程内部定义并保留使用的标识符
Python中有33个保留字 例如if elif else
and elif import raise global
is else in return nonlocal
assert except is try True
break finally lambda while False
class for not with None
continue from or yield
def if pass del
TempStr=input(“请输入带符号的温度值:”)
if TempStr[-1] in [‘f’,‘F’]: #即判断最后一个字符为F 或 f
C=(eval(TempStr[0:-1])-32)/1.8 # eval 评估函数
print(“转换后的温度:”.format©)
elif TempStr[-1] in [‘c’,‘C’]:
F=1.8*eval(TemStr[0:-1])+32
print(“转换后的温度:”.format(F))
else:
print(“输入错误”)
供计算机程序理解的数据形式
字符串:(由双引号或单引号,含义相同,字符串序号由0开始)
字符串序号:1.正向
2.反向
字符串的使用:使用【】获取字符串中的单个字符
索引:返回字符串中单个字符 <字符串>【M】 M:返回字符串的第几个字符
“请输入带符号的温度值:”【0】或者TempStr【-1】
切片:返回字符串中一段字符子串 <字符串>【M:N】
“请输入带符号的温度值:”【1:3】:取出字符串中的第一个字符第二个字符但不到第三个字符 表达字符串输入 或者TempStr【0:-1】
整数类型:123
列表类型【10,011】:
import qrcode
qr = qrcode.QRCode(
#vesion控制二维码大小 1——40
version=1,
#error-correction:控制纠错级别 L M Q H
error_correction=qrcode.ERROR_CORRECT_L,
# box-size控制二维码中每个格子的像素数 默认为10
box_size=10,
#border 控制四周留白包含的格子数 ,默认为4
border=4,
)
qr.add_data(“你是猪吗,叫你扫就扫”)
qr.make(fit=True)
img=qr.make_image(fill_color=‘red’,back_color=‘yellow’)
#(fill_color=‘red’)
filename=“hhh”
img.save(filename)
img.show()
add_data(str,optimize=20):添加要转换的文字到data参数
如果使用了optimize优化参数 数据被拆分为多个块来进行优化
以找到一个长度至少为这个值得足够简洁的方式生成二维码。设置为0避免优化
make(fit=true):当fit参数为真或者没有给出version参数时,将会调用 best_fit方法来找到适合数据的最小尺寸
make_image(fill_color=none,back_color=none,image_factory=none):创建二维码的图像并返回,默认为pil图像
#none为默认
#mask_pattern:选择生成图片的模
Import、 import……from import……as
特点:
1、 浮点数间运算存在不确定尾数
例如:0.1 53位二进制表示小数部分 约10-16次方
2、浮点数运算通过round函数来运算
-round(x,d) 对x四舍五入 d是截取小数尾数
3、浮点数用科学技术发计算
使用字母e或E作为幂的符号 以10为基数 格式如下
e 表示a*10^b
例如
4、关于python浮点数
1), 取值范围和精度无限制
2,)运算存在不确定尾数
除法:10/3=3.3333333333335
整数‘’除://
余数:%
X**y:
Ads(x):绝对值 x的绝对值 abs(-10.2)=10.02
Divmod(x,y):商余。(x//y,x%y) 同时输出商和余数
Divmod(10,3)结果为(3,1)
Pow(x,y【z】) 幂余 (x**y)【…】表示参数z可省略
Pow(3,pow(3,99),10000)结果为4587
Round(x【,d】)
字符串切片类型
使用【m:n:k】根据步长对字符串切片
M:表示至开头
N:表示至结尾
K:表示步长
转义字符
转义符
转义符表达特定字符的本意
“这里有个双引号(\”)” 输出这里有个双引号(”)
字符串操作符
字符串处理函数
字符串处理办法
Str.lower()或str.upper()大写变小写
Str.replace(old,new)旧子串替换为新子串
Str.join(iter) 主要用于字符串分隔
格式化是对字符串进行格式表达的方式
字符串格式化使用.format(逗号分隔的函数)
字符串类型和使用方法
槽
“{ }:计算机{ }的CPU占用率为{ }%” .format(“2018-10-10”,”C”,10)
0 1 2 0 1 2
012 对应format的函数的参数
Format()方法的格式控制
: <填充> <对齐> <宽度> <,> <.精度> <类型>
引号符号 用于填充的单个字符 <左对齐
右对齐
^居中对齐 槽设定的输出宽度 >>>”{0:=^20}”.fomat(“python”)
=:表示填充符号
输出:=python==”{0:*>20}”.fomat(“python”)(左对齐)
输出:****************python”{0:20}”.fomat(“python”)(宽度为10 默认左对齐)
输出‘python ’
字符串
: <填充> <对齐> <宽度> <,> <.精度> <类型>
数字的千位分隔符 浮点数小数精度或字符串的最大输出长度 整数类型 bcdoxS
浮点数类型
E e f %
b :二进制形式 c: 字符形式 d:十进制 o:八进制
x:十六进制 X:大写的十六进制
time库的使用
time库是python中处理时间的标准库
时间格式化:将时间以合理的方式展示出来
TIME库的函数
Strftime(tpl,ts) tpl:是格式化模板字符串 用来定义输出效果
Ts是计算机内部类型变量
Strptime(str,tpl)
程序计时:
测量时间:perf_counter()
1.获得文本进度条的变化时间
采用sleep()模拟一个持续的进度
numbers模块:数值抽象类,包含类Complex,Real,Rational,Integral。
math模块:数学函数。cmath模块:复数运算数学函数。
decimal模块:高精度数值运算
数值运算模块Numpy
Python扩展模块Numpy提供了更高效的数值处理功能。Numpy模块主要提供数组和矩阵处理功能,还包括高级功能 例如傅里叶变换
科学计算模块Scipy
Python扩展模块Scipy提供了用于科学计算的功能Scipy模块包括统计、优化、整合线性代数、傅里叶变换、信号和图像处理、常微分方程求解器等功能
Python标准模块math中提供许多常用的数学函数,包括三角函数,对数函数和其他通用函数和其他通用函数。
Math模块包含的常量和函数,其中的三角函数以弧度为模块
假设实例基于from math import *
意义:是一种小型的、高度专业化的编程语言,内嵌在python中,通过re模块实现
正则表达式:使用某种预定义的模式去匹配一类具有共同特征的字符串,主要用于处理字符串,可以快速,准确的完成复杂的查找、替换等处理要求,在文本处理编辑与处理、网页爬虫之类的场合有重要的应用。Python中re提供了正则表达式操作所需要的功能
语法:以单个字符、字符集合、字符范围、字符间的组合等形式组成模板,然后用这个模板与所搜素的字符串进行匹配。
匹配方式:精确匹配和贪婪匹配
(1)数字和字符用\d可以匹配一个数字,用“w”可以匹配一个字符(包括数字)
例如:‘11\d’匹配11+一个数字组合 ‘\d\d\d’匹配三个数字
‘\w\w\d’可匹配sp3
匹配: match search
切分与分组:
单分支if 二分支if-else及紧凑形式
多分支if-elif-else及条件之间的关系
Not and not > >= == <= < !=
异常处理 try-except-else-finally
1.遍历循环:
for 循环变量 in 循环结构
文件遍历循环
for line in fi: 指遍历文件的每一行
2.无线循环
While 条件 语句块
循环控制保留字 break continue
3. random库 随机函数
基本随机数函数 随机数种子
3.random函数:
random.seed(10) #产生种子10对应的序列
Random()库函数
4.圆周率的计算
例1:
pi=0
N=100
for k in range(N):
pi+=1/pow(16,k)(4/(8k+1)-2/(8k+4)-1/(8k+5)-1/(8*k+6))
print(“圆周率是:{}”.format(pi))
跟窗体空间布局
跟窗体是图形化应用程序的根容器 是tkinter的底层控件的实例
导入tkinter模块后 调用TK()初始化
包括尺寸 颜色 字体 相对位置 浮雕样式 图标样式 和悬停光标
控件实例名=控件(父容器,【属性】)
控件实例名.布局方法()
3.控件布局
控件的布局通常有:pack(),grid(),place()
一. pack()方法
设置fill side 等属性参数
Fill 可设置fill=X fill=Y fill=both 分别表示控件实例向水平方向 垂直方向 或二位伸展填充父容器未被占用的空间
(2)side()
Side可取值 side=TOP,LEFT,RIGHT BOTTOM
分别表示本控件布局相对于下一个控件实例的方位
二.grid()方法
网格 行(row)列 (column) columnspan()
三.Place()方法
坐标设置place(x=,y=)
S.add(x):增加x到集合 S中
S.discard(x):移除S中的x如果X不在集合S中,不报错
S.remove(x):移除S中的元素x 如果X不在集合S中 产生keyError异常
S.clear():移除S中的所有元素
S.pop()随机返回S的一个元素 更新S 若 S为空产生keyError异常
S.copy()返回S的一个副本
Len(S):返回S的元素个数
X in S 判断S中元素X X在S中返回true 否则 false
X not in S:相反
Set(X):将其他变量X 转变为集合类型
序列处理函数
6个操作符
X in S :
X not in S
S+t:连接两个序列
S*n 序列S 复制n次
S[i]:索引 返回S中的第i个元素
S[i:j]或者S[i;j;k]:切片以k为步长
列表
:方括号或list创建一个列表 赋值仅传递引用
ls[i]=X 替换
ls[I;j;k]=lt 用列表lt替换ls【i】
del ls[i] 删除第i个元素
ls+=lt 将lt元素加入ls
列表操作函数
ls.append(x) 在列表ls最后增加一个元素
ls.clear() 删除所有元素
ls.copy()
is.inseart(I,X)
ls.pop(i) 将列表第i个元素取出 并删除
ls.remove(x) 将列表中出现的第一个元素X删除
ls.reverse 列表翻转
jieba库
分词
精确模式 全模式 搜索引擎模式
Jieba常用函数
Jieba.lcut(s) 返回一个列表类型的分词结果
Jieba.lcut(s,cut_all=true) 存在冗余
Jieba.lcut_for_search(s) 返回列表类型的分词结果
Jieba.add_word() 增加新词
文件的打开方式
文件定义名=open(文件路径,“打开文件模式”)
‘r’ 只读 默认值 文件不存在 返回错误
‘w’ 覆盖写模式,文件不存在,则创建
‘x’ 创建写模式,文件不存在,则创建 存在则返回错误
‘a’ 追加写模式 文件不存在则创建,存在则在文件最后追加内容
‘b’ 二进制文件格式
‘t’ 文本文件模式 默认以文本文件模式打开
‘+’ 与r/w/x/a一同使用 在原功能增加同时读写功能
rt 默认情况下的模式
文件关闭 文件定义名.cloce
文件内容的读取
.readlines(hint=-1) :读入文件所有行 以每行为元素形成列表 如果给出参数 读入前hint行。
.readline
.write .witelines
.seek() :文件输出时 指针默认在末尾 seek函数 定义指针位置
自动轨迹绘制实例讲解
例如
300,1,144,0,1,0
300:行进距离
1:转向判断 0:左转 1 右转
144:转向角度
0,1,0:rgb颜色(0-1之间浮点数)
一维数据的存储
存储方式一 :空格存储
缺点:数据不能使用空格
存储方式二: 逗号存储
缺点:数据中不能使用英文逗号
存储方式三:其他方式
使用其他符号分隔 采用特殊字符分隔
存储格式
Txt.open(fname).read()
ls=txt.split(“”) 找到分隔的符号
f,close()
采用空格分隔方式将数据写入文件
Ls=[‘中国’,‘美国’,‘英国’]
f.open(fname,’w’)
f.write(‘ (使用任意分隔的符号) ‘.join(ls))
f.close()
一维数据:列表和集合
二维数据:列表类型
Line=line.replace(“\n”,””) 回车替换成空字符串
二维数据的表示: 列表类型 其中每个元素也是一个列表
Csv格式:逗号分隔表示一堆 按行分隔表示二维
二维数据的处理:for循环+,split()+.join()nlK
w.generate(txt): 向wordcloud对象中加载文本txt
w.to_file(filename) 将词云输出为图像文件 png或 jpg
绘制词云常规方法
1、配置对象参数
2、加载词云文本
3、输出词云文本
“word by python “ :
分隔:以空格分隔单词
统计:单词出现次数并过滤
字体:根据统计配置字号
布局:颜色环境尺寸
w.wordcloud.WordCloud(参数)
参数:
width(默认400px) height(默认200px)
参数–修改字体:
min_font_size: 指定词云中最小字号
max_font_size: 指定最大字号 根据高度调 节
font_step: 指定词云中 的步进间隔 默认为1 由词语频率大小
font_path:指定字体文件的路径 默认为 none w.wordcloud.WordCloud(font_path=””)
max_words:指定词云显示的最大单词数量 默认200
stop_words: 指定词云的排除词列表 即不显示的单词列表
mask :指定词云形状
需要引用 imread()函数
from scipy.misc import imread
mk=imread(“pic.png”)
w=wordcloud.WordCloud(mask=mk)
background_color(“颜色”) 改变背景颜色
w.generate(“ “.join(jieba.lcut(text)))
jieba.lcut 分隔开变为列表 在 以空格 分隔加入到词云中
用于网络爬取
requests.request() 构造一个请求 支撑以下方法的基础方法
request.get()
url:获取页面的url连接
params:url中的额外参数 字典或字节流格式
**kwargs:12个访问的参数 获取HTML网页的主要方法
.head() 获取HTML网页头信息的方法
.post() 向HTML网页提交post请求的方法
.put() 向HTML网页提交post请求的方法
.patch() 向HTML网页提交局部修改请求
.delete() 向HTML网页提交删除请求
Requests的response对象
r.status_code: http请求的返回状态 200表示成功 404失败
r.text:http响应内容的字符串形式 url对应的页面内容
r.encoding: HTTP header中猜测的响应内容编码
r.apparent_encoding: 从内容中分析出的响应内容编码方式(备选编码方式)
r.content: HTTP中响应内容的二进制编码形式
读函数:reader()
Reader(csvfile,dialect=‘excel’ ,**fmtparams)
Csvfile 必须是支持迭代(lterator)的对象 可以是文件 file对象或者列表(list)的对象 如果是文件对象 打开时需要加“b”标志参数
dialect=‘excel’: 编码风格 默认为excel风格 也就是用逗号(,)分隔 dialect也支持自定义‘
’ fmtparam:格式化参数 用来覆盖之前dialect对象指定的编码风格
OS库
Os库是Python标准库 包含几百个函数
常用路径操作 进程管理 环境参数
路径操作:os.path子库 处理文件路径及信息
os.path.abspath()
进程管理:启动系统中其他程序
os.system(command)
环境参数:获得系统软硬件信息等环境参数
读图 展示 保存
Import cv2
读图: cv2.imread()
原型:Tetval= cv2.imread(filename[,flags])
返回值:mat类型 返回一个代表图片的Numpy数组 读取图片失败返回一个空的矩阵对象
Flags 选择读取图片的方式 三种选择:imread_color cv2.imread_grayscale cv2.imrea_unchanged 默认为带颜色imread_color
展示:cv2.imshow()
原型:none=cv2.imshow(winname,mat) 没有返回值
参数一:winname:显示的窗口名 如不创建 西东创建
参数2:mat 需要显示的图像
保存:cv2.imwrite()
Bool=cv2.imwrite(filename,image,params) 返回值为布尔类型
Filename:写入的路径
Image:写入的图像文件
Params:特定的参数代码
cv2.warpAffine()
Opencv中的仿射变换函数
对图片进行平移旋转
cv2.warpAffine(img, M ,(rows,cols),flags=cv2.INTER_,borderMode=cv2.BORDER_REFLECT,borderValue(255,255,255) )
M:变换矩阵
borderMode:边界像素模式
,borderValue:边界填充值
cv2.warpAffine(img, M ,(rows,cols))基本使用
import cv2
img= cv2.imread(r’D:/Python/hello.jpg’)
import numpy as np
M=np.float32([[1,0,25],[0,1,50]]) 1,0 代表向右平移25 0,1 代表向下平移50
Shifted_img=cv2. warpAffine(img,M,(img.shape[1],img.shape[0]))
Cv2.imshow(‘shifted’,shifted_img)
按某角度顺时针或逆时针旋转
(h,w)=image.shape[:2]
M=cv2.getRotationMatrix2D(center,135,1.0)
Rotated_img=cv2. warpAffine(img,M,(w,h))
Mat=cv2. getRotationMatrix2D(center , angle(旋转角度) , scale (缩放比例))
Opencv中的翻转函数cv2.flip()
Dst=cv2.flip(Src,flipCode)
dst:代表和原始图像具有同样大小 类型的图像
src:原始图像
flipCode:代表旋转类型(0:垂直旋转 1 水平旋转 -1 水平垂直旋转
opencv 图片裁剪操作
裁剪使用Numpy 中的切片操作即可
Cropped_img=img[100:500(高) , 50:650(宽)]
Cv2.imshow(‘flipped’,cropped_img)
色彩通道分离cv2.split()与融合cv2.merge()
转换灰度:
Gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAAY)
Opencv人脸识别
Opencv-CascadeClassifier 级联分类器的初步认识
cascadeClassifier(file):级联分类器 file以及训练过的模型数据
检测函数:
cascadeClassifier.detectMultiScale(image,vector,scaleFactor,minNeighbors,flags,minSize,maxSize)
face_cascade=cv2. cascadeClassifier(file)//创建级联器
faces= face_cascade.detectMultiScale()//找出人脸
参数1. Image 待检测图片 一般为灰度图像加快检测速度
参数2. Objects 被检测物体的矩形框向量组
参数3.
面部识别进阶
视频流下的人脸检测:
使用VidioCapture方法读取视频文件:
vc=cv2. VidioCapture(‘images/video.mp4’)
参数是0 为调用本地摄像头 也可以是一个网络摄像头的网络地址
While True:
retval,frame=vc.read()
if not rerval or cv2.waitKey(16) & 0xFF==ord(‘q’):
break
cv2.show(‘video’,frame)
vc.rease()
cv2.desdroyAllWindows()
计算机视觉基础入门
人脸识别1
收集训练数据 训练识别器 识别目标对象
使用LBP特征检测人脸
FaceRecognizer 人脸识别类的可以通过cv2.face.LBPFaceRecognazer_create()函数生成
训练和预测 train函数和predict函数 数据加载和保存函数 save 和load
使用生成的人脸特征模型文件trainner.yml 就可以对testing目录下的人脸识别进行测试 看看是否能识别书出图像人脸是谁
检测功能使用haar级联分类器
可以直接调用 haarcascade_frontalface_default(人脸检测)
Haarcade_eye(眼睛检测)
使用LBP特征检测人脸
基于LBP的人脸特征训练特征文件
file=‘lbpcascade_fontalface_improved.xml’
FaceRecognizer 人脸识别类
FaceRecognizer人脸识别类的可以通过cv2.face.LBPHFaceRecognizer_create()函数生成
人脸识别训练和预测分别对应 train函数和predict函数
数据处理:
Numpy:表达N维数组的最基础库
Pandas:Python数据分析高层次应用库(
提供简单的数据结构和数据分析工具)
理解数据类型和索引的关系,操作索引即操作水壶架
基于Numpy
Series=索引+一维数据 DataFrame=
SciPy库:数学、科学和工程相关功能库
数据可视化:
Matplotlib:高质量的二维数据可视化功能库
Seaborn:统计类数据可视化功能库 基于matplotlib
Mayavi:三维科学数据可视化功能库
文本处理:
PyPDF2:用来处理PDF文件的工具集
NLTK:自然语言文本处理第三方库(分类、标记、语法句法、语句分析)
Python-docx:创建或更新Microsoft Word文件的第三方库(增加和配置段落,图片、表格、文字)
机器学习:
SCikit-learn:机器学习方法工具集
TensorFlow:alphago背后的机器学习计算框架
开源机器学习框架
将数据流图作为基础 图节点代表运算,边代表张量。
MXNet:j基于神经网络的深度学习计算框架