python
文章平均质量分 68
牧码文
只要思想不滑坡,从此不怕bug多
展开
-
用了那么久的Numpy,才开始真正会用ndarray对象
Numpy库的ndarray对象内容目录Numpy库的ndarray对象一、numpy的ndarray对象二、Numpy创建数组1.调用numpy.empty(shape, dtype, order)方法2.numpy.zeros()3.numpy.ones()4.numpy.asarray(),从已有的数组创建5.numpy.frombuffer:用于动态数组实现6.numpy.fromiter:从迭代器中建立7.numpy.arange()三、Numpy切片和索引1.冒号的使用':'2.多维数组中冒号原创 2022-02-27 23:17:10 · 489 阅读 · 0 评论 -
在ubuntu中安装conda部署python3.7环境,然后安装superset
Ubuntu下安装conda和supersetApache Superset 是一个现代的数据探索和可视化平台。它功能强大且十分易用,可对接各种数据源,包括很多现代的大数据分析引擎,拥有丰富的图表展示形式,并且支持自定义仪表盘Superset 官网地址:http://superset.apache.org/一、介绍在安装Superset之前,要转备好安装环境,Supetset是用python开发的,对python要求的版本是3.7+,但是对于ubuntu来讲,其实是自带python的,只是自带的pt原创 2021-09-22 17:38:43 · 1604 阅读 · 0 评论 -
python读取文件中的数据插入到mysql
使用Python读取文件中的数据然后插入到mysql表中在python中存在许多的第三方库操作MySQL,比如MySQLdb、pymysql等MySQLdb是针对与python2的模块,还未曾支持python3主要讲解一下pymysql这个模块pymysql安装模块pip3 install pyMySQL如果是windows下的Anaconda用户,可以打开Anaconda Prompt后使用命令conda install PyMySQL连接数据库获取一个连接:connect()c原创 2021-08-01 21:03:36 · 1818 阅读 · 3 评论 -
python必学库之NumPy库
NumPyNumPy简介:NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy的应用NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。SciPy 是一个开源的 Python 算法库和数学工具包。SciP原创 2021-07-28 18:22:31 · 1916 阅读 · 1 评论 -
数据结构-查找-哈希查找法
哈希查找法哈希法(或称散列法)这个主题通常和查找法一起讨论,主要原因是哈希法不仅用于数据的查找,在数据结构的领域中,还能将它应用在数据的建立、查找、删除与更新中例如符号表在计算机上的应用领域很广泛,包含汇编程序、编译程序、数据库使用的数据字典等,都是利用提供的名称来找到对应的属性。符号表按其特性可以分为两类:静态表(Static Table)和动态表(Dynamic Table)。而“哈希表”则是属于静态表中的一种,是将相关的数据和键值存储在一个固定大小的表格中哈希法简介基本上,哈希法就是将本身的键原创 2021-07-03 12:04:52 · 1260 阅读 · 0 评论 -
数据结构-查找-斐波那契查找法
斐波拉契查找法斐波拉契查找法和二分法一样都是以分割范围来进行查找的,不同的是斐波拉契查找法不以对半分割而是以斐波拉契级数的方式分割。斐波拉契级数F(n)的定义如下:F0=0,F1=1Fi=Fi-1 + Fi-2,i≥2斐波拉契查找法的好处是只用到了加减运算而不需用到乘除运算,这从计算机运算的过程来看,效率会高于前两种查找法。在尚未介绍斐波拉契查找法之前,先来认识斐波拉契查找树。所谓斐波拉契查找树,是以斐波拉契级数的特性来建立的二叉树,其建立的原则如下:斐波拉契树的左右子树均为斐波拉契树当数据原创 2021-07-03 12:03:05 · 940 阅读 · 0 评论 -
数据结构-查找-插值查找法
插值查找法插值查找法又叫做插补查找法,是二分查找法的改进版。它是按照数据位置的分布,利用公式预测数据所在的位置,再以二分法的方式渐渐逼近。使用插值法是假设数据平均分布在数组中,而每一项的差距相当接近或有一定的距离比例。插值法的公式为:Mid = low + ((key - data[low]) / (data[high] - data[low])) * (high - low)其中Key是要查找的键值,data[high],data[low]是剩余待查找记录中的最大值和最小值,假设数据项为n,其插值查原创 2021-07-02 14:30:03 · 1898 阅读 · 1 评论 -
数据结构-查找-顺序查找法
在数据处理的过程中,是否能在时间内查找到所需要的数据是一个相当值得重视的问题。所谓查找(search),指的是在数据文件中找出满足某些条件的记录。用以查找的条件称作为“键值(Key)”,就如同排序所用的键值一样。常见的查找方法根据数据量的大小,我们可以将查找分为内部查找和外部查找内部查找:数据量较小的文件可以一次性全部加载到内存中进行查找外部查找:数据量大的文件无法一次性加载到内存中处理,而需要使用辅助存储器来分次处理如果从另一个角度来看,查找的技巧又可以分为“静态查找”和“动态查找”两种原创 2021-07-02 13:19:38 · 3576 阅读 · 1 评论 -
数据结构-查找-二分查找法
二分查找法如果要查找的数据已经实现拍好了顺序,就可以使用二分查找法来进行查找。二分查找法是将数据分割成两等分,再比较键值与中间值的大小,如果键值小于中间值,就可以确定要查找的数据在前半段,否则在后半段。如此分割直到找到或者确定不存在为止。例如,已排序的数列为2,3,5,8,9,11,12,16,18,而所需查找的是11时:首先跟第5个值9比较数列内容2358911121618因为11>9,所以和后半部分中间值12比较数列内容原创 2021-07-02 13:18:11 · 716 阅读 · 0 评论 -
数据结构-排序-基数排序法
基数排序法基数排序法和我们之前所讨论的排序法不太一样,它并不需要进行元素间的比较操作,而是属于一种分配模式排序方式基数排序法按比较的方向可以分为最高位优先(Most Significant Digit First,MSD)和最低位优先(Least Signigicat Digit First,LSD)两种。MSD法是从最左边的位数开始比较,而LSD则是从最右边的位数开始比较。以LSD为例对三位数的整数进行排序原始数据原始数据599573460168原创 2021-06-26 18:52:44 · 240 阅读 · 0 评论 -
数据结构-排序-堆积排序法
堆积排序法堆积排序法是选择排序法的改进版,它可以减少在选择排序法中的比较次数,进而减少排序时间。堆积排序法用到了二叉树的技巧,它是利用堆积数来完成排序的。堆积树是一种特殊的二叉树,可以分为最大堆积树和最小堆积树两种。最大堆积树它是一个完全二叉树所有节点的值都大于或者等于它左右子节点的值树根是堆积树中最大的最小堆积树它是一个完全二叉树所有节点的值都小于或等于它左右子节点的值树根是堆积树中最小的在排序之前,需要将二叉树转换成堆积树,转化步骤:假设data=[32、17、16、24、原创 2021-06-26 18:07:24 · 825 阅读 · 2 评论 -
算法的基础知识-时间复杂度
算法基础知识算法定义算法(Algorithm)这个单词最早出现在波斯数学家阿勒花刺子密在公元825年所写的《印度数学算术》中。如今普遍认可的对算法的定义是:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作算法的特性输入输出这个比较容易理解,算法具有零个或者多个输入有穷性有穷性是指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成确定性算法的每一步骤都具有确定的含义,不会出现二义性。原创 2021-06-26 00:08:20 · 385 阅读 · 0 评论 -
数据结构-排序-快速排序
快速排序快速排序法又称分割交换排序法,是目前公认的速度最快的排序法,该方法是现在数据中找到一个虚拟的中间值,然后将大于这个中间值的放到右边,小于中间值的放到左边,然后将数组以该中间值分为两组,左边和右边逐步重复上述操作,直到排序完成为止。操作和分割步骤入下:假设数组有n项R1,R2,R3…Rn,其相应的键值为K1,k2,k3…kn;先假设K的值为第一个键值,将其设置为第一次的中间值将数组从左向右找到键值Ki,使得Ki>K将数组从右向左找到键值Kj,使得Kj<K如果i<j,对调原创 2021-06-25 22:16:25 · 361 阅读 · 1 评论 -
数据结构-排序-合并排序
合并排序法合并排序法(Merge Sort)的工作原理是针对已经排好的两个或者两个以上的数列(或数据文件),通过合并的方式将其组合成一个大的且已经排好序的数列(或数据文件),步骤如下:将N个长度为1的键值成对的合并成N/2个长度为2的键值组将N/2个长度为2的键值组成对地合并成N/4个长度为4的键值组将键值组不断地合并,知道合并成一组长度为N的键值组为止合并排序法的分析使用合并排序法,n项数据一般需要约logn次处理,每次处理的时间复杂度O(n),所以合并排序法的最佳情况、最差情况及平均情原创 2021-06-25 20:04:15 · 408 阅读 · 2 评论 -
python设计插入排序法
插入排序法插入排序法(Insert Sort)是将数组中的元素逐一与已经排序好的数据进行比较,前两个元素先排好,再将第三个元素插入适当的位置,所以这三个元素仍然是已经排序好的,接着将第四个元素加入,重复此步骤,直到排序完成为止。比如:55,23,87,62,16第一步:加入55第一步55第二步:加入23,放在55前面第二步2355第三步:加入87,放在55后面第三步235587原创 2021-06-06 20:10:53 · 214 阅读 · 3 评论 -
python设计选择排序法
选择排序法选择排序法(Selection Sort)可以使用两种方式排序,即在所有的数据中,当大到小排序时,将最大值放大第一个位置,当从小到大排序时,将最大值放入到最后一个位置,就这样的方式循环遍历,循环交换,以此重复,直到排序完成为止原始数据5523876216第一次排序:找到最小值与第一个交换第一次1623876255第二次排序:找到最小值与第二个交换第二次1623876255原创 2021-06-06 20:09:46 · 80 阅读 · 0 评论 -
python设计冒泡排序
冒泡排序法冒泡排序又称为交换排序法,是从观察水中气泡变化构思而成的,原理是从第一个元素开始,比较相邻元素的大小,若大小有误,则对调后再进行下一个元素的比较,就仿佛气泡逐渐从水底升到水面上一样。如此扫描完一次之后,就可以确保最后一个元素位于正确的顺序。接着逐步进行第二次扫描,直到完成所有元素的排序关系为止冒泡分析法:最后的情况个平均情况均需比较(n-1)+(n-2)+(n-3)+…+3+2+1=n(n-1)/2次;事件复杂度为O(n^2),最好的情况只需完成一次扫描,发现没有执行数据的交换操作,就表示原创 2021-06-06 20:08:39 · 109 阅读 · 3 评论 -
数据结构-图形结构
数据结构-图形结构树形结构的最大不同就是描述节点与节点直接“层次”的关系,但是图形结构却是讨论两个顶点之间“连通与否”的关系,如果为图形中连接两顶点的边填上加权值,这类图形就称为“网络”图形简介图形理论时欧拉为了解决“哥白尼堡”问题所想出来的一种数据结构理论,这就是著名的“七桥问题”欧拉环与欧拉链欧拉当时使用的方法就是以图形结构来进行分析的。他以顶点表示城市,以边表示桥梁,并定义了连接每个顶点的边数,称为该顶点的度数。欧拉最后得出一个结论:当所有顶点的度数都为偶数时,才能从某顶点出发,经原创 2021-05-30 19:33:51 · 2549 阅读 · 0 评论 -
数据结构-图形结构-生成树和图的最短路径
生成树生成树又称“花费树”“成本树”或者“值树”,一个图的生成树就是以最少的边来连通图中所有的顶点,且不造成回路的属性结构。更清楚的说,当一个图连通时,使用深度优先遍历(DFS)或广度优先遍历(BFS)必能访问图中所有的顶点,且G=(V,E)的所有边可以分为两个集合:T和B(T为搜索时经过的所有边,而B为其余未被经过的边)。if S = (V,T)为G中的生成树,具有以下3项性质:E = T + B如果加入B中的任一边到S中,就会产生回路V中的任何2个顶点Vi、Vj在S中存在唯一的一..原创 2021-05-30 19:29:04 · 470 阅读 · 0 评论 -
数据结构-图形结构-图的遍历
图的遍历树的遍历目的是访问树的每一个节点一次,可用的方法有中序法、前序法、后序法三种。至于图的遍历,可以定义如下:一个图G=(V,E),存在某一定点v属于V,我们希望从v开始,通过此节点相邻的节点而去访问图G中的其他节点,这就被称为“图的遍历”。就是从某一个顶点V1开始,遍历可以经过V1到达的顶点,接着遍历下一个顶点直到全部的顶点遍历完毕为止。在遍历的过程中可能会重复经过某些顶点和边。通过图的遍历可以判断该图是否连通,并找出连通分支和路径。图遍历的方法有两种:深度优先遍历和广度优先遍历。深度..原创 2021-05-30 19:26:09 · 505 阅读 · 0 评论 -
数据结构-图形结构-图的数据表示
树形结构的最大不同就是描述节点与节点直接“层次”的关系,但是图形结构却是讨论两个顶点之间“连通与否”的关系,如果为图形中连接两顶点的边填上加权值,这类图形就称为“网络”图形简介图形理论时欧拉为了解决“哥白尼堡”问题所想出来的一种数据结构理论,这就是著名的“七桥问题”欧拉环与欧拉链欧拉当时使用的方法就是以图形结构来进行分析的。他以顶点表示城市,以边表示桥梁,并定义了连接每个顶点的边数,称为该顶点的度数。欧拉最后得出一个结论:当所有顶点的度数都为偶数时,才能从某顶点出发,经过每条边一次,再回到原创 2021-05-30 19:24:14 · 1029 阅读 · 0 评论 -
数据结构-树形结构
数据结构-树形结构首先,什么是树形结构,简单地说,树形结构就是你现在想的那样的结构,数据结构像树形的就是树形结构,典型的树形结构示例:Windows操作系统和Unix操作系统和文件系统均是树形结构的应用。树的基本概念**树(Tree)**是一个由一个或者一个以上的节点(Node)组成的,存在一个特殊的节点,称为树根(Root),Root很熟悉吧,Linux的根目录。每个节点是一些数据和指针组合而成的记录ABCDA为根节点,B、C、D均是A的子节点树还可以组成森林原创 2021-05-22 18:02:26 · 6715 阅读 · 0 评论 -
数据结构-二叉树-二叉树的遍历
二叉树的遍历线性数组或链表只能单向从头到尾遍历或者反向遍历。所谓二叉树的遍历简单的来说就是访问树中所有的节点各一次,并且在遍历后,将树中的数据转化为线性关系。二叉树可以将每个节点分为左右两个分支二叉树的特性一律从左向右遍历,那么遍历的方式就分为了三种,分别是中序遍历:左子树->树根->右子树前序遍历:树根->左子树->右子树后序遍历:左子树->右子树->树根这三种方式的顺序也十分好记,简单来说“从左向右,树根最牛”,意思就是所有遍历的顺序都是从左向右,树根原创 2021-05-19 20:08:26 · 297 阅读 · 0 评论 -
数据结构-树形结构和二叉树的建立
数据结构-树形结构首先,什么是树形结构,简单地说,树形结构就是你现在想的那样的结构,数据结构像树形的就是树形结构,典型的树形结构示例:Windows操作系统和Unix操作系统和文件系统均是树形结构的应用。树的基本概念**树(Tree)**是一个由一个或者一个以上的节点(Node)组成的,存在一个特殊的节点,称为树根(Root),Root很熟悉吧,Linux的根目录。每个节点是一些数据和指针组合而成的记录ABCDA为根节点,B、C、D均是A的子节点树还可以组成森林原创 2021-05-18 15:28:04 · 223 阅读 · 1 评论 -
数据结构-队列
数据结构-队列队列是一种先进先出的数据机构,和堆栈一样都是一种有序的线性表的抽象数据结构堆栈可以看做是类似于往米缸里放米的“先进后出”的数据结构,而队列就是一种类似与排队检票的“先进先出”的数据结构在堆栈中我们只需要定义一个top来标记堆栈最顶端的数据,而在队列中需要定义两个属性:front和rear两个指针(或称为游标)来标记最前和最后的两个元素,分别指向队列的最前端和最尾端队列的基本操作队列是一种抽象数据结构,具有一下特性:具有先进先出的特性拥有两个基本操作,即加入和删除,而且使用f原创 2021-05-16 15:16:01 · 182 阅读 · 2 评论 -
数据结构-堆栈
数据结构-堆栈堆栈(Stack)是一组相同数据类型的组合,具有“后进先出”的特性,所有的操作均在顶端进行。堆栈的简介“后进先出”可以看做是往米缸里放米,先放进去的后吃,后放进去的在顶端先吃。堆栈是一种抽象数据结构(ADT,Abstract Data Type),具有下列特性:只能从堆栈的顶端存取数据数据的存取符合后进先出的原则堆栈的基本运算有5种:create创建一个空堆栈push把数据存压入堆栈顶端,并返回新堆栈pop从堆栈顶端弹出数据,并返回新堆栈原创 2021-05-15 18:39:07 · 3991 阅读 · 1 评论 -
数据结构-链表-双向链表
数据结构-链表-双向链表单向链表和环形链表都是属于拥有方向性的链表,只能单向遍历,如果由于某种原因造成了某个连接断裂,那后面的链表数据便会遗失而无法复原。所以,我们可以将两个方向不同的链表结合起来,除了存放数据的字段之外,它还有两个指针变量,除了类似于单向链表的下一个指针next外,还需要一个指针指向上一个数据,这样的链表就是双向链表(Double Linked List)由于每个节点都有两个指针,可以双向通行,因此可以轻松地找到前后节点,同时从链表中任意的节点都可以找到其他节点,而不需要经过反转或者对原创 2021-05-13 12:47:32 · 3852 阅读 · 1 评论 -
数据结构-链表-环形链表
数据结构-链表-环形链表环形链表就是将单链表的尾部指向头部,从而形成一个单方向的环形结构,环形链表中每个元素都可以是head,也都可以是尾部,这样就不用担心链表头指针遗失的问题,而且在遍历链表的时候可以在任一节点来遍历其他节点环形链表的建立class student: def __init__(self): self.name = '' self.no = '' self.next = None head = student() #新增链表头元素 ptr原创 2021-05-12 13:50:03 · 568 阅读 · 1 评论 -
数据结构-链表-单向链表
数据结构-链表-单向链表链表(Linked List)是由许多相同数据类型的数据按特定顺序排列而成的线性表。一个单向链表节点基本上是由两个元素(数据字段和指针)所组成的,而指针将会指向下一个元素在内存中的地址在单向链表中,第一个节点是链表头指针,指向最后一个节点的指针设为None,表示它是链表尾,不指向任何地方。建立单向链表在python中,先定义一个类,关键属性是next(指针字段)class student: def __init__(self): self.name = '原创 2021-05-12 13:10:58 · 188 阅读 · 1 评论 -
数据结构之数组结构
数组结构线性表数组矩阵矩阵相加矩阵相乘矩阵转置稀疏矩阵上三角矩阵以行为主k=n∗(i−1)−i(i−1)/2+jk = n * (i-1) - i(i-1)/2 + jk=n∗(i−1)−i(i−1)/2+j以列为主k=j(j−1)/2+ik=j(j-1)/2 + ik=j(j−1)/2+i右上三角矩阵左上三角矩阵下三角矩阵以行为主k=i(i−1)/2+jk = i(i-1)/2 + jk=i(i−1)/2原创 2021-05-07 19:49:38 · 215 阅读 · 2 评论 -
Python获取特定时间的时间戳
Python获取特定时间的时间戳时间戳就是从当前时间到1970-1-1 0:0:0 的毫秒数,获得的方法是调用time模块import timenow = time.time()以上代码就是获取当前时间的时间戳的代码如果想要获取指定时间的时间戳,需要使用time模块下的mktime()方法因为传入的时间格式有严格的要求,所以在格式方面上必须进行严格定义,python中自定义时间格式需要使用到strptime()方法具体使用:time.strptime("传入时间" , "自定义时间格式"原创 2021-04-10 16:01:52 · 5657 阅读 · 1 评论 -
python的类
python的类首先了解一下python方法的定义python中不需要使用分号“;”结尾,但是遵循严格的格式,代码格式的缩进必须保持正确Python中的方法定义什么简单def methodName(): 代码块python中的类定义类的定义的一般语法class ClassName: [语法块]以上就是类的定义的语法,十分简单,主要来看语法块中的具体内容在类中语法块的第一部分应该声明一个构造函数,构造函数的语法:def __init__(self,para1,para2,...原创 2021-03-30 14:12:18 · 124 阅读 · 0 评论 -
python中的异常处理
python中的异常处理关于异常处理可以简单的概括为:try—except—finallyraise自定义异常类try-catch-finallytry: [可能出现错误的代码块]except 异常类型: [处理异常的代码块]finally: [无论是否出现异常都会执行的代码块]raise将异常向上抛出,可以简单理解为此次执行所遇到的异常不想处理,然后将异常抛出保证本次执行代码不会报异常,但是注意,抛出异常并没有将异常处理掉,只是抛出,如要解决,也要使用try-except原创 2021-03-30 14:11:18 · 59 阅读 · 0 评论