python
赵 XiaoQin
Never Say Never
展开
-
递归;动态规划(最长公共子序列)
啥是动态规划?(递推) 例如:斐波那契序列的非递归法def fib(n): if n==1 or n==2: return 1 alist=[0,1,1] for i in range(3,n+1): alist.append(alist[i-1]+alist[i-2]) return alist[-1]动态规划有啥好处? 递归执行效率低:子问题的重复计算(斐波那契额递归比非递归慢)# fib(1)=1 , fib(..原创 2021-11-14 22:12:54 · 550 阅读 · 0 评论 -
二叉搜索树(展平、插入、查找、删除)
删除:1. 删除的节点为叶子节点:直接删除2. 删除的节点只有左子树或只有右子树:将其子树的根节点替换此节点3. 删除的节点既有左子树又有右子树:用其右子树的最小节点代替,然后将代替的节点删除(这个代替的节点分为其为叶子节点和只有右子树两种情况)# 节点的定义class BiTreeNode: def __init__(self,data): self.data=data self.lchild=None self.rchild=N原创 2021-11-05 21:57:19 · 196 阅读 · 0 评论 -
二叉树的前、中、后序遍历,层次遍历,二叉树的深度
1. 前序遍历(根、左、右)def pre_order(root): if root: print(root.data) pre_order(root.lchild) pre_order(root.rchild)2.中序遍历(左、根、右)def in_order(root): if root: in_order(root.lchild) print(root.data) in_or原创 2021-11-05 20:23:15 · 141 阅读 · 0 评论 -
堆排序(O(n*logn))及python中堆排序的内置函数
1. 内置函数实现堆排序'''python内置模块:heapq常用函数:heapify(x)heappush(heap,item) 加元素heappop(heap)'''import heapqimport randomalist=list(range(15))random.shuffle(alist)heapq.heapify(alist) # 建堆(小根堆)new=[]for i in range(15): new.append(heapq.heappop(a.原创 2021-11-03 17:38:40 · 280 阅读 · 0 评论 -
排序(冒泡、选择、插入、希尔、归并、快排、计数)
1. 快速排序def QuickSort(alist,start,end): if start>=end: return i=start j=end pivot=alist[start] # 基准值 while i<j: if i<j and alist[j]>=pivot: # 比它小的值放在左边 j-=1 alist[i]=alist[j] ..原创 2021-10-19 19:43:49 · 653 阅读 · 2 评论 -
二分查找法
1. 二分查找(时间复杂度O(log n))class Solution(object): def search(self, nums, target): low=0 high=len(nums)-1 while(low<=high): mid=(low+high)//2 if nums[mid]==target: return mid原创 2021-10-13 21:58:39 · 143 阅读 · 0 评论 -
链表操作基础(python)
链表创建、合并、节点删除、翻转、奇偶位置重排原创 2021-09-23 21:10:08 · 5672 阅读 · 0 评论 -
Matplotlib之设置坐标系的显示信息
import matplotlib.pyplot as pltfrom numpy import *设置x,y坐标轴的取值范围:plt.xlim(-2,2) #设置x轴的范围为[-2,2]plt.ylim(-3,3) #设置y轴的范围对x,y轴添加描述:plt.xlabel('I am X ') #添加x轴的标签描述plt.ylabel('Y label') #...原创 2019-07-19 11:41:14 · 5564 阅读 · 0 评论 -
Matplotlib之figure函数实现多图显示和一图多个函数显示
pyplot中的figure函数可以实现在同一坐标系中同时显示多个函数,也可以实现将多个函数显示在不同的坐标图中。1.一张坐标图中显示多个函数import matplotlib.pyplot as pltfrom numpy import *x=linspace(-2,2) #设置自变量的取值范围为[-2,2],y1=2*x+1y2=x**2plt.figure() #...原创 2019-07-19 10:48:36 · 14525 阅读 · 0 评论 -
Matplotlib之设置x,y坐标轴的位置
先将显示的坐标图的上边框和右边框去掉,即设置它们的显示方式为不显示:ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')注:spines译为‘脊’,也就是坐标图中的边框。将坐标图的下边框和左边框作为坐标系的x轴和y轴,并调整坐标轴的位置:ax.spines['bottom'].set_pos...原创 2019-07-19 12:44:59 · 24699 阅读 · 1 评论 -
Matplotlib之legend图例
当一个图中有多个函数时,可以使用图例添加对函数的描述。函数:plt.legend()下面的例子中举了两种打印图例的方式,一种是不给legend()设置参数,默认打印所有图形的图例;一种是通过设置legend()函数的属性来打印图形的图例。注意:legend()函数的handles属性用来控制图例中显示的图例包含哪些函数的信息,labels属性中的参数必须与handles中的参数对应,即...原创 2019-07-19 13:44:26 · 8666 阅读 · 1 评论 -
Matplotlib之标注图像的annotate和text函数
怎样在图上标出下图所示的信息:请看代码:import matplotlib.pyplot as pltfrom numpy import *x=linspace(-2,2)y=2*x+1ax=plt.gca()ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')ax.spines['...原创 2019-07-19 16:33:49 · 3407 阅读 · 0 评论 -
Matplotlib之tick设置坐标轴刻度的透明度
如图,由于图线太粗,导致坐标系中的部分刻度被遮挡:对坐标轴的的坐标点进行遍历,分别对这些点进行透明度的设置,代码如下:import matplotlib.pyplot as pltfrom numpy import *x=linspace(-2,2)y=2*xax=plt.gca()ax.spines['right'].set_color('none')ax.spines...原创 2019-07-19 17:30:00 · 2582 阅读 · 0 评论 -
Matplotlib之plot函数线图
1.为什么使用matplotlib?将数据可视化,帮助用户理解、分析数据。2.matplotlib的简单应用用matplotlib画图用到的是 matplotlib中的pyplot模块。 linspace是numpy中的函数,用来制作绘制图片所使用的数据。 plot(x,y)函数用来制作函数线图,自变量在前,因变量在后。 show()函数放到最后,用来显示上面制作好的图片。i...原创 2019-07-19 10:28:36 · 553 阅读 · 0 评论 -
机器学习实战1.1--KNN分类算法
K-近邻算法采用测量不同特征值之间的距离方法进行分类。K-NN算法的工作原理是:存在一个训练样本集,并且样本集中的每组数据都存在标签,即我们知道样本集中每一组数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。 一般我们选择前k个最相似的数据,最后这k个最相似数据中出现次数最多的分类,作为...原创 2019-07-16 19:05:00 · 427 阅读 · 0 评论 -
meshgrid(x,y)函数的应用
1.功能meshgrid(x,y)用于生成绘制3D图形所需的网格数据。在计算机中进行绘图操作时,往往需要一些采样点,然后根据这些采样点绘制出整个图形。在绘制3D图形时需要有x,y,z三组数据,x,y这两组数据可以看作是在XOY平面内对坐标进行采样而得到的坐标对(x,y)。2.meshgrid(x,y)是怎样处理数据的:看下面这个例子:from numpy import *x=a...原创 2019-07-23 17:19:13 · 3320 阅读 · 1 评论 -
Matplotlib之3D图像
怎样画出如下所示的3D图像:代码如下:import matplotlib.pyplot as pltfrom numpy import *from mpl_toolkits.mplot3d import Axes3D#设置坐标轴fig=plt.figure() #定义一个窗口ax=Axes3D(fig) #在窗口添加一个3d坐标轴#设置X,Y,Z的值X=a...原创 2019-07-23 16:34:15 · 1786 阅读 · 0 评论 -
启动visdom服务器
运行python项目时,项目报错提示:先打开所需的环境: python -m visdom.server操作如下:运行命令:python -m visdom.server 在地址栏中输入:http://localhost:8097/即可启动visdom服务器。...原创 2019-07-14 20:18:33 · 17205 阅读 · 0 评论 -
Python else语句的三种用法
1. if-else语句:num=input()num=int(num)if num>0: print(num,'是个正数')else: print(num,'是个负数')2.while/for-else语句:只有执行完while/for才会执行else,如果while/for循环没有执行完发生中断跳出循环,则不会执行else语句。#示例1:nu...原创 2019-04-24 12:53:04 · 4001 阅读 · 0 评论 -
026 Python笔记--异常处理
一、异常处理模式1. 模式一:try: 检测范围except Exception [as reason]: 出现异常(Exception)后的处理 1.1一个try,一个except:try: file=open(r'E:\zzz.txt','r') print(file.read()) file.close()except OS...原创 2019-04-23 23:43:48 · 226 阅读 · 0 评论 -
Python 文件--python拥有垃圾回收机制,为什么还需要对文件进行手动关闭?
尽管python有所谓的“垃圾回收机制”,但是对于打开的文件,在不需要的时候仍然需要使用file.close()将文件对象关闭,这是为什么呢?Python拥有垃圾回收机制,会在文件对象的引用计数降至零的时候自动关闭文件,所以在Python编程中,如果忘记关闭文件并不会造成内存泄漏。但是这并不是说可以不用关闭文件,如果你对文件进行了写入的操作,那么你应该在完成写入之后进行文件的关闭操作。因为...原创 2019-04-19 10:53:32 · 692 阅读 · 0 评论 -
Python 异常类型总结
以下表格内容参考自:https://fishc.com.cn/thread-45814-1-1.html1.异常类型:AssertionError 断言语句(assert)失败 AttributeError 尝试访问未知的对象属性 EOFError 用户输入文件末尾标志EOF(Ctrl+d) FloatingPointError 浮点计算错误 Gen...原创 2019-04-23 21:59:02 · 751 阅读 · 0 评论 -
Python 文件操作--pickle模块
python中关于对文件的操作存在这样一个问题:从文件中读取数据时返回的是字符串。将各种类型的python对象写入文件是很容易的,但是将这些类型的数据从文件中恢复出来是比较难的一件事。但是python提供的pickle模块可以帮助我们实现这样的操作。pickle模块几乎可以将所有的python对象都转换成二进制形式存放在文件中,又可以将文件中的内容由二进制形式转换为相应的对象类型。例:将一...原创 2019-04-23 20:39:21 · 1133 阅读 · 0 评论 -
Matplotlib之scatter散点图
plot()函数用来画连续的坐标线,而scatter()函数是用来画散点的。如下所示:import matplotlib.pyplot as pltfrom numpy import *plt.figure()x=linspace(-3,3,10) #在[-3,3]范围内平均选出10个x点y=x**2plt.plot(x,y,color='red',linestyle='...原创 2019-07-19 20:04:23 · 670 阅读 · 0 评论 -
Matplotlib之bar柱状图
编写代码画出与下图类似的柱状图:代码如下:import matplotlib.pyplot as pltfrom numpy import *n=10X=arange(n) #返回结果是一个数组:array([1 2 3 4 5 6 7 8 9])。range()函数返回的是可迭代的对象,类型是对象。Y1=(1-X/float(n))*random.uniform(0....原创 2019-07-20 12:26:30 · 306 阅读 · 0 评论 -
机器学习实战1.2--KNN之从文本文件中解析数据和将部分数据以散点图的形式展示出来
#从文本文件中解析数据from numpy import *def file2matrix(filename): with open(filename) as file: #求得样例的个数 arrayOLines=file.readlines() numberOfLines=len(arrayOLines) #求KN...原创 2019-07-17 21:09:23 · 904 阅读 · 0 评论 -
机器学习实战--KNN算法实例之手写数字识别
1.示例描述:系统识别的数字为0-9。数字图像为32*32的二进制图像,目录trainingDigits中大约2000个样本用于训练算法,目录testDigits中大约有900个样本用于测试。数字图像以二进制的形式存储在记事本中。数字图像的形式如下所示,文件以数字的标签命名,下面这个数字图像的命名为“0_1.txt”,表示数字0的第1个样本。2.KNN分类算法识别数字的步骤如下:...原创 2019-08-07 11:58:18 · 1261 阅读 · 0 评论 -
机器学习实战--KNN算法实例之约会网站
下面的部分是机器学习实战(Machine Learning in Action)一书中关于KNN算法实现约会网站配对实例的代码整合。1.示例描述如下:海莉使用约会网站寻找适合自己的约会对象,她将自己的约会对象分为三类:不喜欢、一般喜欢、非常喜欢。海莉希望分类软件能很好的帮助她将匹配对象划分到确切的分类中,以便她在不同的时间约会不同的人。海莉收集了一些曾经约会过的人的信息,并把这些信息放...原创 2019-08-06 22:17:43 · 1077 阅读 · 0 评论 -
机器学习实战--决策树算法实例之判断海洋生物(ID3)
1.实例描述:下表中有5组数据,两个特征,根据着两组特征判断这个样本是不是鱼类。海洋生物数据 不付出水面是否可以生存(no surfacing) 是否有脚蹼(flippers) 属于鱼类 1 1 1 yes 2 1 1 yes 3 1 0 no 4 0 1 no 5 0...原创 2019-08-08 21:18:13 · 2395 阅读 · 0 评论 -
机器学习实战2.4--决策树之递归构建决策树
1.递归构建决策树从数据集中构建决策树的流程如下:得到原始的数据集,然后基于最好的特征划分数据集,由于特征可能有多个,因此可能存在大于两个分支的数据集划分。第一次划分之后,数据集将被向下传递到树分支的下一个节点,在这个节点上,可以再次划分数据。所以采用递归的原则处理数据集。递归结束的条件:①程序遍历完所有划分数据集的属性,或者每个分支下的所有实例都具有相同的分类。②如果数据集已经处理了所有...原创 2019-08-08 21:03:45 · 2397 阅读 · 0 评论 -
机器学习实战1.4--KNN之利用分类器对数据进行测试
利用已有的数据集对分类函数进行测试,并计算错误率。用已有数据的10%作为测试数据,剩下的数据作为训练数据。错误率为错误结果的次数除以测试数据的总数。#利用分类器针对数据进行测试(数据的前10%用做测试数据,剩下的数据用作训练数据),并计算错误率def Test(): hoRatio=0.10 dataSet,labels=file2matrix('dataTestSet') ...原创 2019-08-06 17:42:23 · 778 阅读 · 0 评论 -
机器学习实战1.3--KNN之归一化数值
当根据数据集中提供的数据计算样本之间的距离时,可以使用欧式距离公式,例如:很容易发现,上面方程中数字差值最大的属性对计算结果的影响最大。但是如果这三种特征同等重要,就需要对原始数据进行改进。在处理这种不同取值范围的特征值时,我们通常采用的方法是将数值归一化,如将取值范围处理为0 - 1或-1 - 1之间。下面的公式可以将任意取值范围的特征值转化为0-1区间内的值:newValue=...原创 2019-08-06 11:08:05 · 577 阅读 · 0 评论 -
机器学习实战2.3--决策树之选择最好的数据集划分方式
1.划分数据集的依据划分数据集最大的原则是:将无序的数据变得更加有序。在划分数据集之前之后信息发生的变化称为信息增益,获得信息增益最高的特征就是最好的选择。怎样恒量信息增益呢?之前的一篇博客介绍了熵的概念。信息增益是上的减少或者数据无序度的减少。也就是说熵越小说明数据越有序。2.怎样选择最好的数据集划分方式遍历整个数据集,对每个特征划分数据集的结果计算一次信息熵,通过对比信息熵的大...原创 2019-08-08 12:18:55 · 1763 阅读 · 0 评论 -
机器学习实战2.2--决策树之划分数据集
1.实现数据集划分代码如下:#按照给定的特征划分数据集def splitDataSet(dataSet,feature,value): reDataSet=[] for featureVector in dataSet: if featureVector[feature]==value: reduceFeature=featureVe...原创 2019-08-08 10:47:24 · 705 阅读 · 0 评论 -
机器学习实战2.1--决策树之求数据集的香农熵
1.什么是香农熵?集合信息的度量方式称为香农熵或者简称为熵。熵定义为信息的期望值,在明晰这个概念之前,我们必须知道信息的定义。如果待分类的事务可能划分在多个分类之中,则符号的信息定义为: 其中是选择该分类的概率。为了计算熵,我们需要计算所有类别所有可能值包含的信息期望,通过下面的式子得到: ...原创 2019-08-07 22:23:34 · 1059 阅读 · 0 评论 -
Matplotlib之axes图中图
编写代码画出下图所示的函数图:代码如下:import matplotlib.pyplot as pltx=[1,2,3,4,5,6,7]y=[1,3,4,2,5,8,6]plt.figure()plt.axes([0.1,0.1,0.8,0.8]) #left=0.1,bottom=0.1,width=0.8,height=0.8plt.plot(x,y,color='...原创 2019-07-27 17:33:07 · 1227 阅读 · 0 评论 -
Matplotlib之animation动画
用animation画一个y=sin(x)的动画函数。代码如下:from numpy import *import matplotlib.pyplot as pltfrom matplotlib import animationfig,ax=plt.subplots() #相当于fig=plt.figure(),ax=plt.subplot();ax=plt.subplot也...原创 2019-07-27 21:53:40 · 9034 阅读 · 0 评论 -
Matplotlib之主次坐标轴
画出下图所示的坐标图:代码如下:import matplotlib.pyplot as pltfrom numpy import *x=arange(0,10,0.1)y1=0.05*x**2y2=-1*y1fig,ax1=plt.subplots()ax2=ax1.twinx() #产生一个ax1的镜面坐标ax2,ax1与ax2共享一个x轴ax1.plot(x,y...原创 2019-07-27 20:55:04 · 1370 阅读 · 0 评论 -
Matplotlib之subplot分格显示 2
1.方法一:subplot2grid()函数例一:用subplot2grid()函数画出下图中的函数:代码如下:import matplotlib.pyplot as pltfrom numpy import *x=linspace(0,1,5)plt.figure()#将图片分为3行3列,从第1行第1列开始显示,函数跨3列1行plt.subplot2grid((3,...原创 2019-07-27 16:42:46 · 1910 阅读 · 0 评论 -
Matplotlib之Image图像
编写代码显示类似于下面的图像:代码:import matplotlib.pyplot as pltfrom numpy import *a=array([0.1,0.2,0.3, 0.4,0.5,0.6, 0.7,0.8,0.9]).reshape(3,3)plt.imshow(a,interpolation='nearest',cmap=...原创 2019-07-23 12:05:24 · 5909 阅读 · 0 评论