一、heapq库简介 heapq 库是Python标准库之一,提供了构建小顶堆的方法和一些对小顶堆的基本操作方法(如入堆,出堆等),可以用于实现堆排序算法。...在heapq库中,heapq使用的数据类型是Python的基本数据类型 list ,要满足堆积的性质,则在这个列表中,索引 k 的值要小于等于索引 2*k+1 的值和索引 2*k+2 的值(在完全二叉树中...在heapq库的源码中也有介绍,可以读一下heapq的源码,代码不多。...使用Python实现堆排序可以参考:Python实现堆排序 完全二叉树的特性可以参考:二叉树简介 二、使用heapq创建堆 # coding=utf-8 import heapq array = [...每添加一个数据后,heap都满足小顶堆的特性。 heapify(array),直接将数据列表调整成一个小顶堆(调整的原理参考上面堆排序的文章,heapq库已经实现了)。
binarytree 库是一个 Python 的第三方库。这个库实现了一些二叉树相关的常用方法,使用二叉树时,可以直接调用,不需要再自己实现。...一、安装binarytree pip install binarytree 在binarytree库中,可以供我们导入使用的有1个类和5个函数。下面会依次介绍每一个类或函数的用法。...如果二叉树的左子树不为空,则左子树上所有节点的值均小于它的根节点的值。 2. 如果二叉树的右子树不为空,则右子树上所有节点的值均大于它的根节点的值。 3....': 2, 'max_leaf_depth': 2, 'is_bst': False, 'is_balanced': True, 'is_symmetric': False} 关于Node类中其他属性的用法就不一一介绍了...binarytree 库的源码并不复杂,可供调用的5个函数代码都很少,大部分代码是实现Node类,在Node类中,代码多是因为实现了很多常用的方法,单独看其中一个方法时,代码并不多。
python真的是很好的语言,首先python为我们封装了很多简单又实用的爬虫库。所以今天博主就带领大家认真的学习下python中被广泛实用的爬虫库——requests库。...专为python而建,python有史以来被下载的最多的库之一。...requests是一个很实用的Python HTTP客户端库,爬虫和测试服务器响应数据时经常会用到,requests是Python语言的第三方的库,专门用于发送HTTP请求,使用起来比urllib简洁很多...IP代理网站的IP与端口和类型#!...,但是学爬虫我们还是要从底层慢慢的学起,万丈高楼平地起,它也是需要地基稳定的。
python PaddleOCR库的介绍 说明 1、PaddleOCR是基于深度学习的ocr识别库,中文识别精度相当还不错,能够应对大多数文字提取需求。...2、需要依次安装三个依赖库,shapely库可能会受到系统的影响,出现安装错误。... draw_ocr(image, boxes, txts, scores) im_show = Image.fromarray(im_show) im_show.show() 以上就是python...PaddleOCR库的介绍,希望对大家有所帮助。...更多Python学习指路:python基础教程 收藏 | 0点赞 | 0打赏
背景介绍 顾名思义,机器学习是计算机编程的科学,通过它可以从不同类型的数据中学习。Arthur Samuel给出的更一般的定义是 - “机器学习是一个研究领域,它使计算机无需明确编程即可学习。”...但是在现代,与过去各种python库,框架和模块相比,它变得非常简单和高效。今天,Python是这项任务中最流行的编程语言之一,它已经取代了业界的许多语言,其中一个原因是它拥有大量的库。...Skikit-learn是经典ML算法中最受欢迎的ML库之一。它建立在两个基本的Python库之上,即NumPy和SciPy。Scikit-learn支持大多数有监督和无监督的学习算法。...PyTorch是一个流行的基于Torch的Python开源机器学习库,它是一个开源的机器学习库,在C中用Lua中的包装器实现。...Pandas是一个流行的Python数据库分析库。它与机器学习没有直接关系。我们知道数据集必须在训练前准备好。在这种情况下,Pandas非常方便,因为它是专门为数据提取和准备而开发的。
numpy中,数组的轴(axis)是一个重要概念,轴的个数等于数组的维数以下面这个数组为例:这是个二维数组,它一共有两条轴,分为为0轴和1轴有了轴以后,我们可以通过轴索引来访问数组的元素import numpy...as npa=np.arange(1,10)a=a.reshape(3,3)print(a)print(a[1,2])我们构建了一个2维数组a,通过a[1,2]取出了数组a的第2行第3个元素(值为6)...放括号中的1、2分别为数组a的0轴、1轴索引三维数组的轴有三条分别代表数组的长度、宽度和深度下面我们创建一个三维数组:import numpy as npa=np.arange(11,20)b=np.arange...(21,30)c=np.arange(31,40)a=np.append(a,b)a=np.append(a,c)a=a.reshape(3,3,3)print(a)可以看到最终生成的a是一个3*3*3...的三维数组,它实际上是3个3*3的三维数组组合而成
numpy中,数组(ndarray)具有许多属性,这些属性提供了关于数组形状、数据类型、大小等的有用信息。...以下是一些常用的NumPy数组属性:【shape】shape代表数组的形状,还可以通过reshape重新设置数组的形状,这里我们不再赘述【size】这是数组中元素的总数。...它等于数组形状的所有元素乘积import numpy as npa=np.ones((3,3))print(a.size)使用ones()构建了一个3*3矩阵,总元素数为9【ndim】ndim输出的是数组的维度...a)print(a.ndim)b=np.zeros((3,4))print(b)print(b.ndim)对于一维数组a,ndim输出1对于二维数组b,ndim输出2【dtype】dtype为数组元素的类型...nbytes :这是整个数组在内存中所占的字节数这里不再详述
Pillow库是一个Python的第三方库。...在Python2中,PIL(Python Imaging Library)是一个非常好用的图像处理库,但PIL不支持Python3,所以有人(Alex Clark和Contributors)提供了Pillow...,可以在Python3中使用。...import PIL from PIL import Image 在Pillow库中,除了有二十多个模块,还支持非常多的插件。...其中最常用的是Image模块中同名的Image类,其他很多模块都是在Image模块的基础上对图像做进一步的特殊处理,Image模块中会导入部分来使用。本文介绍Image模块的常用方法。
不同形状的数组或标量计算时,发生广播(Boardcasting) 广播分为标量广播和数组广播 当一个数组与标量进行计算时,标量会在指定维度上被拓展以后再进行计算 【标量广播】 如图,当数组a[[1,2]..., 与10相加时,标量10会被扩展为 一个2*2的矩阵(元素全为10) [3,4]] 再与数组a相加 我们可以在jupyter notebook中查看这个过程 import...numpy as np a=np.array([[1,2], [3,4]]) b=a+10 print(b) 【数组广播】 下面来看数组的广播 import numpy as np...(2,3,4) 矩阵b的形状是(3,4) 它们是可以相加的,相加后的结果c是2*3*4矩阵 相加时,原本(3,4)的b矩阵会在0轴上被复制成两份,扩展为(2,3,4)矩阵,然后与矩阵a相加 广播后的b矩阵...可以计算得出,这个广播后的矩阵与矩阵a相加就得到c
DataFrame是pandas库中另一个重要的数据结构,它提供了类似于excel的二维数据结构使用pandas.DataFrame()函数可以创建一个DataFrame数据类型【用数组创建DataFrame...=np.random.uniform(0,150,size=(5,3)).astype('int32')df=pd.DataFrame(a)df我们首先使用random.uniform生成了一个5*3的矩阵...a,它的每个元素是0~150的随机数然后用DataFrame()函数把矩阵a转换为DataFrame类型可以看到,在jupyter中,dataframe的显示非常直观,上面第一行是它的列索引(默认为0,1,2...)左边第一列是它的行索引(默认为0,1,2,3,4)中间的区域是我们的数据DataFrame跟series类似,可以使用index参数手动设置行索引此外,还可以使用columns参数设置列索引import...Math','English']df=pd.DataFrame(a,index=line,columns=columns)df【用字典创建DataFrame】pandas还支持字典创建DataFrame字典的键
前面我写的爬虫用的都是Python自带的的标准库urllib,这个库用起来还行,不过有些操作比较麻烦。所以现在我们来学习一下一个非常著名的HTTP库——requests。 打开官网还有一段警告。...可见requests的方便,可以帮我们避免这么多危险。 警告:非专业使用其他 HTTP 库会导致危险的副作用,包括:安全缺陷症、冗余代码症、重新发明轮子症、啃文档症、抑郁、头疼、甚至死亡。...居然是中文文档,翻译的还不错,真的很良心。 发起请求 发起GET请求非常简单,直接使用requests的get方法即可。比方说下面的代码获取百度首页的信息。...标准库,那么代码就比较复杂了。...,调用cookies属性即可,它会返回一个RequestsCookieJar对象,它实现了标准库的http.cookiejar。
线性代数中,数组转置是矩阵操作中的一个常见概念,它涉及到行和列的互换矩阵操作中,经常需要对矩阵进行转置,或者需要交换矩阵的轴在numpy 中,数组的转置可以通过使用 .T 属性或者 numpy.transpose...() 函数来实现【.T】.T会把数组的行和列进行交换,即交换0轴和1轴例如:import numpy as np A = np.array([[1, 2, 3], [4, 5,...6]]) B = A.T print(B)可以看到原矩阵A是一个2*3的矩阵,A.T返回一个3*2矩阵对A的行和列做了交换【transpose()函数】numpy.transpose() 函数也可以实现转置...,我们已经理解,数组转置实际上就是轴的交换transpose()函数的优势在于高维数组的转置它接受第二个参数(为元组),调整数组轴的排序我们来看一个更复杂的例子import numpy as np A...4*3*2的矩阵可以看到,transpose(A,(2,1,0))是把0轴和2轴进行了交换元组(2,1,0)实际上定义了0轴、1轴、2轴的新顺序
DataFrame 具有许多常用属性,这些属性提供了关于数据集的元信息或描述性统计【shape】返回DataFrame的形状import pandas as pdimport numpy as npa=...Literature','Math','English']df=pd.DataFrame(a,index=line,columns=columns)print(df.shape)【dtypes】返回元素的数据类型...print(df.index)【columns】列索引print(df.columns)【values】数据print(df.values)可以看到,返回值跟numpy格式相同因为pandas是基于numpy的【...size】数据的总个数【describe()】返回 DataFrame 中数值列的统计摘要可以看到,统计结果列出了每一列的元素个数、平均值、标准差、最大值、最小值,以及不同区间的数值信息
Jupyter Notebook 是一个开源的 Web 应用程序,可以利用它方便的进行代码调试和可视化运行,是一个强大的工具我们今后的学习都将在jupyter notebook中进行【notebook安装...输入命令:jupyter notebook会自动调用浏览器打开一个网页jupyter notebook会列出这个文件夹中所有的文件,如果这个文件夹内容比较多的话,载入速度就会很慢如果没有自动打开网页,在你的命令行中找到这一行可以复制这个生成的网址...,在浏览器打开接下来,我们要在右边选择新建一个Python 3文件New->Python 3 (ipykernel)之后会进入这样的页面可以看到,实际上jupyter notebook创建了一个名为Untitled.ipynb...的文件我们试试看,在这里能不能调试Python程序print('Hello world!')...单击上面的小三角运行代码可以看到运行结果出现在代码框的下方jupyter notebook中是用一个一个代码框来分隔代码的单个框中可以写入一到多行代码,并且当场就能在下方查看运行的结果,非常的方便点击File
数组的拼接指的是把两个或者多个数组合并为一个数组【concatenate()函数】numpy.concatenate()用于沿指定的轴连接两个或多个数组import numpy as npa=np.array...1,2,3])b=np.array([4,5,6])c=np.concatenate((a,b),axis=0)print(c)可以看到,两个1*3数组拼接以后,变成了一个1*6数组再来看一个二维矩阵的例子...10,11,12]])c=np.concatenate((a,b),axis=1)print(c)两个2*3矩阵沿着1轴拼接,变成了一个2*6矩阵【append()函数】numpy.append()用于在数组的末尾添加值...(1)向一维数组的末尾添加值import numpy as np a = np.array([1, 2, 3]) b = np.append(a, 4) print(b)通过append,把4作为一个元素附加到末尾...(2)向二维数组的末尾添加值对二维以上的数组使用append时,需要指定是哪一轴import numpy as np a = np.array([[1, 2], [3, 4]]) b = np.array
在上一篇文章中介绍了Pillow库的一些基本用法,参考:Python Pillow(PIL)库的用法介绍 Pillow库的功能非常多,本文继续介绍。...返回指定大小的图片副本,图片的模式与原图相同。有6个参数。 size, 返回图片的尺寸。传入一个长度为2的元组(width, height)。 method, 转换方法。...将每个像素点随机移动到指定距离范围内的另一个点,distance表示每个像素点的随机变化距离,处理后的图片有“粒度”的变化。...在Image模块中,还有很多对图片处理的方法和函数,如有一组以get和put开头的方法,用于获取或修改图片的属性,有将图片与字节等互相转换的方法,有对动图的处理方法等。...这里就不继续一一介绍了,感兴趣可以看看源码和官方文档,并多做尝试。
访问数组元素允许直接读取或修改存储在数组中的数据,这对于后续的任务至关重要【一维数组索引访问】访问numpy的一维数组元素跟list是类似的使用 方括号 + 数字索引从左往右索引数字依次为0,1,2,3,4
1. os库基本介绍 ?...os库提供通用的、基本的操作系统交互功能 os库是Python标准库,包含几百个函数分为路径操作、进程管理、环境参数等几类 路径操作:os.path子库,处理文件路径及信息进程管理:启动系统中其他程序环境参数...路径操作 os.path子库以path为入口,用于操作和处理文件路径 常见的如下表所示: ? 3....进程管理 os.system(command) 执行程序或命令command在Windows系统中,返回值为cmd的调用返回信息 import osos.system("C:\\Windows\\System32...环境参数 以下是几个常用的环境参数相关函数: ?
numpy的切片访问是一种选择数组元素子集的方法它允许通过指定起始索引、结束索引和步长来选择数组中的一部分数据【一维数组切片访问】numpy一维数组切片操作与python列表切片操作一样切片运算有两种形式...[0:5][2:]在这个例子中表示[2:10]※这里的切片访问跟range()函数一样,满足左闭右开的关系,即最左边取a[2]元素,最右边取a[5-1]元素步长(step)可以指定选取元素的间隔,使得程序每隔...n个元素取一个值,例如:import numpy as npa=np.arange(1,10)print(a)print(a[1:9:2])a[1:9:2]表示取出数组a的a[1]到a[8]的元素,每隔...2个元素取一个值【多维数组切片访问】多维数组的切片访问可以结合多维数组的索引访问和一维数组的切片访问来理解即,对多维数组的若干个轴进行切片,它的语法跟一维数组的切片是一样的,例如:import numpy...as npa=np.arange(1,13).reshape(3,4)print(a)print(a[1:3,1:4])a[1:3,1:4]即取出数组a的第2行~第3行,第2列~第4列的元素
前言 从事测试工作已有4年了,期间通过python编写了很多自动化脚本,接下来的日子和大家分享一下测试工作上常用的python库,适合常年从事黑盒测试的同学了解一些入门级技巧。...是的,数着数着就瞌睡了,然后从头再来\(^o^)/~ 视频自动拆帧~opencv 如今,python可以完美的解决这种问题,今天给大家介绍可以实现拆帧的一个python库:opencv-python,...通过视频拆帧的形式解决所有突发的不复用的评测需求。...以python3为例,首先安装python-opencv库: pip install opencv-python (注意:安装时的库名称是opencv-python,而不是python-opencv)...结语 opencv拆帧就介绍到这里,还在做黑盒手工评测的同学可以参考这个方法,并可以学习下RGB/OCR识别来辅助进行评测。
领取专属 10元无门槛券
手把手带您无忧上云