首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python heapq用法介绍

一、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已经实现了)。

3.6K30

Python binarytree用法介绍

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类中,代码多是因为实现了很多常用方法,单独看其中一个方法时,代码并不多。

1K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python介绍7 数组

    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分别为数组a0轴、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三维数组组合而成

    20810

    Python介绍6 数组属性

    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 :这是整个数组在内存中所占字节数这里不再详述

    12610

    机器学习相关python介绍

    背景介绍 顾名思义,机器学习是计算机编程科学,通过它可以从不同类型数据中学习。Arthur Samuel给出更一般定义是 - “机器学习是一个研究领域,它使计算机无需明确编程即可学习。”...但是在现代,与过去各种python,框架和模块相比,它变得非常简单和高效。今天,Python是这项任务中最流行编程语言之一,它已经取代了业界许多语言,其中一个原因是它拥有大量。...Skikit-learn是经典ML算法中最受欢迎ML之一。它建立在两个基本Python之上,即NumPy和SciPy。Scikit-learn支持大多数有监督和无监督学习算法。...PyTorch是一个流行基于TorchPython开源机器学习,它是一个开源机器学习,在C中用Lua中包装器实现。...Pandas是一个流行Python数据分析。它与机器学习没有直接关系。我们知道数据集必须在训练前准备好。在这种情况下,Pandas非常方便,因为它是专门为数据提取和准备而开发

    61020

    Python介绍12 广播

    不同形状数组或标量计算时,发生广播(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

    12410

    Python HTTPrequests 介绍

    前面我写爬虫用都是Python自带标准urllib,这个用起来还行,不过有些操作比较麻烦。所以现在我们来学习一下一个非常著名HTTP——requests。 打开官网还有一段警告。...可见requests方便,可以帮我们避免这么多危险。 警告:非专业使用其他 HTTP 会导致危险副作用,包括:安全缺陷症、冗余代码症、重新发明轮子症、啃文档症、抑郁、头疼、甚至死亡。...居然是中文文档,翻译还不错,真的很良心。 发起请求 发起GET请求非常简单,直接使用requestsget方法即可。比方说下面的代码获取百度首页信息。...标准,那么代码就比较复杂了。...,调用cookies属性即可,它会返回一个RequestsCookieJar对象,它实现了标准http.cookiejar。

    1.6K100

    Python介绍15 DataFrame

    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字典

    13710

    Python介绍8 数组转置

    线性代数中,数组转置是矩阵操作中一个常见概念,它涉及到行和列互换矩阵操作中,经常需要对矩阵进行转置,或者需要交换矩阵轴在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轴新顺序

    40700

    Python Pillow(PIL)用法介绍(二)

    在上一篇文章中介绍了Pillow一些基本用法,参考:Python Pillow(PIL)用法介绍 Pillow功能非常多,本文继续介绍。...返回指定大小图片副本,图片模式与原图相同。有6个参数。 size, 返回图片尺寸。传入一个长度为2元组(width, height)。 method, 转换方法。...将每个像素点随机移动到指定距离范围内另一个点,distance表示每个像素点随机变化距离,处理后图片有“粒度”变化。...在Image模块中,还有很多对图片处理方法和函数,如有一组以get和put开头方法,用于获取或修改图片属性,有将图片与字节等互相转换方法,有对动图处理方法等。...这里就不继续一一介绍了,感兴趣可以看看源码和官方文档,并多做尝试。

    1.7K20

    Python介绍11 数组拼接.docx

    数组拼接指的是把两个或者多个数组合并为一个数组【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

    15210

    Python介绍1 jupyter notebook使用

    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

    23710

    Python介绍2 初识numpy

    numpy是一个开源python数值计算,专为进行严格数字处理而产生。它提供了许多高级数值编程工具,如矩阵数据类型、矢量处理,以及精密运算。...人工智能项目中往往充斥着大量矩阵计算,无论是数据预处理、特征工程还是模型训练,numpy都为我们提供了强大支持。因此,对于想要深入学习人工智能初学者来说,掌握numpy是必不可少一步。...安装完成以后,使用如下命令可查看numpy是否已安装成功pip show numpy显示如下信息表明numpy成功安装【创建一维数组】创建一个空文件夹,在其中启动jupyter notebook新建一个python...3文件在代码框中键入如下代码:import numpy as npa=np.array([1,2,3])print(a)这里import numpy as np一个惯用写法,表示导入numpy并给它设定别名为...npnp.array()调用了numpyarray函数,它将根据参数形式生成一个相应数组最后我们从打印结果中可以看出这是一个1行3列矩阵在jupyter notebook中,支持使用对象名来显示对象信息你可以在第二个代码框中输入

    16110
    领券