![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
xddwz
这个作者很懒,什么都没留下…
展开
-
python读写csv文件
python读取csv文件:import csvreader = csv.reader(csv_file) for kk, line in enumerate(reader): print(line)python写入csv:result_file = open("result.csv", "w", newline='', encoding='utf-8')result_writer = csv.writer(result_file, delimiter=','原创 2021-04-28 17:23:41 · 189 阅读 · 0 评论 -
python多线程时写入文本文件
python多线程时写入文本文件原创 2022-09-29 21:06:53 · 693 阅读 · 0 评论 -
python实现Kmeans
代码:import numpy as npimport randomfrom math import sqrtdef dist(arr1, arr2): return sqrt(np.sum(arr1 - arr2) ** 2)def random_center(dataset, k): """ 随机生成初始的聚类中心,dataset的每一行是一个样本 :param dataset: :param k: 聚类中心的个数 :return:原创 2021-02-02 17:09:11 · 197 阅读 · 0 评论 -
KNN算法及python实现
分类算法 – KNN算法KNN(K-Nearest Neighbor)是一个分类算法,属于有监督学习。KNN思想的核心在于:近朱者赤,近墨者黑,根据新样本的k个最近邻居来判定其类别。1. 理论说明1.1 算法概论假设我们已知n个样本的特征和标签(即所属分类),并以此作为样本集A。当输入一个没有标签的样本b时,我们可以通过比较新样本b与样本集A中的数据对应的特征,然后提取出最为相似的k个数据。最后我们选取k个最相似的数据中出现次数最多的分类,作为新数据的分类。1.2 算法步骤原创 2021-02-02 14:41:03 · 909 阅读 · 0 评论 -
python在图像上写入中文
opencv不支持在图像上写入中文,需要使用PIL实现,代码:def put_chinese_on_img(img, text, loc): """ 在图像上添加中文字符 :param img: 图像 :param text: 文本 :param loc: 位置 :return: """ cv2img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # cv2和PIL中颜色的hex码的储存顺序不同原创 2021-01-28 14:03:28 · 930 阅读 · 2 评论 -
maskrcnn训练问题报错:selected_polygons.append(self.polygons[i]) IndexError: list index out of range
训练mask rcnn实例分割时报错:Traceback (most recent call last): File "tools/train_net.py", line 203, in <module> main() File "tools/train_net.py", line 196, in main model = train(cfg, args.local_rank, args.distributed) File "tools/train_net.py原创 2021-01-27 16:56:38 · 1478 阅读 · 2 评论 -
Python如何忽略UserWarning兼容性警告
Python的第三方包往往依赖其它的包进行开发。一旦依赖的包发生较大的版本升级,那么往往会出现兼容性问题, 引起编译器警告或报错。解决方法:import warningswarnings.filterwarnings("ignore")原创 2021-01-27 16:51:55 · 28119 阅读 · 2 评论 -
ERROR: Could not find a version that satisfies the requirement pytorch==1.5.0 (from versions: 0.1.2,
安装pytorch时报错:ERROR: Could not find a version that satisfies the requirement pytorch==1.5.0 (from versions: 0.1.2, 1.0.2)ERROR: No matching distribution found for pytorch==1.5.0解决方法:确定自己的cuda与python版本到这里下载对应的whl,然后pip安装...原创 2021-01-25 11:00:28 · 2282 阅读 · 0 评论 -
Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
原因:出现Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR的原因是你运行代码的电脑的显存不够导致的 一般情况下,如果不加以限制,很多深度学习框架的代码在运行的时候会申请整个显存空间(即便它不需要这么多的资源,但是它申请了之后就不允许其他的程序使用),所以在这种状态下运行代码,就会出现显存不够用的问题(因为还有其他的程序或操作需要显存资源) 解决方法:通过控制显存的使用就可以避免这个问题...原创 2021-01-18 17:46:39 · 1269 阅读 · 0 评论 -
NameError: name ‘IProgress‘ is not defined
jupyter notebook /lab 使用tqdm时(from tqdm import tqdm_notebook as tqdm) 报错: NameError: name ‘IntProgress’ is not defined:解决方案: 安装ipywidgets即可.pip install ipywidgets原创 2021-01-18 14:27:01 · 1034 阅读 · 0 评论 -
opencv算法未实现与版权问题的解决
在使用opencv做图像匹配的时候报错:cv2.error: OpenCV(3.4.3) C:\projects\opencv-python\opencv_contrib\modules\xfeatures2d\src\sift.cpp:1207: error: (-213:The function/feature is not implemented) This algorithm is patented and is excluded in this configuration; Set OPEN原创 2020-12-15 14:49:06 · 1024 阅读 · 0 评论 -
解决AttributeError: module ‘cv2.cv2‘ has no attribute ‘bgsegm‘
使用cv2是报错:AttributeError: module 'cv2.cv2' has no attribute 'bgsegm'报错原因:使用的python环境中没有安装扩展包contrib可以通过pip或者conda安装pip install opencv-contrib-python注意:contrib的版本需要和opencv版本一致......原创 2020-12-15 11:03:16 · 10134 阅读 · 9 评论 -
python通过迭代器读取视频帧
代码:class VideoIter(object): def __init__(self, video_name): self.cap = cv2.VideoCapture(video_name) self.size = [int(self.cap.get(cv2.CAP_PROP_FRAME_HEIGHT)), int(self.cap.get(cv2.CAP_PROP_FRAME_WIDTH))]原创 2020-12-14 12:25:46 · 686 阅读 · 0 评论 -
pycharm中git使用
http://www.zzvips.com/article/105261.htmlhttps://www.cnblogs.com/mengyu/p/11938465.html原创 2020-12-10 15:21:17 · 187 阅读 · 0 评论 -
python中使用pdb进行调试
使用pdb进行调试:pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb 提供了一些常用的调试命令,详情见表下表。下面结合具体的实例讲述如何使用 pdb 进行调试。1. 测试代码示例 import pdb a = "aaa" pdb.set_trace() b = "bbb" c = "ccc" final = a + b + c pr原创 2020-12-03 11:31:28 · 1648 阅读 · 0 评论 -
python-opencv之轮廓检测
在计算机视觉中,轮廓检测是一个比较重要的任务,它不单是用来检测图像或视频帧中物体的轮廓,而且还有其它操作与轮廓检测有关。这些操作包括:计算多边形边界、形状逼近和计算感兴趣区域等。这是与图像数据交互时的简单操作,在物体检测和物体跟踪时会大量使用这些方法。import osimport cv2import numpy as npimg = cv2.imread('1.png')image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)ret, thres原创 2020-11-29 14:21:47 · 906 阅读 · 0 评论 -
python-OpenCV之Canny边缘检测
OpenCV提供了非常方便的Canny边缘检测函数,一行代码即可实现。import osimport cv2import numpy as npimage = cv2.imread('1.png')gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)edges = cv2.Canny(gray, 10, 250)cv2.imwrite('edgs.jpg', edges)Canny边缘检测算法其实非常复杂,包括5个步骤:用高斯滤波原创 2020-11-29 13:57:36 · 315 阅读 · 0 评论 -
python-opencv之圆检测
opencv的HoughCircles函数可用来检测圆,它与使用houghLines函数类似。与HoughLines中用来决定删除或保留直线的两个参数minLineLength和maxLineGap一样,HoughCircles有一个圆心之间的最小距离和圆的最小最大半径。import osimport cv2import numpy as npimage = cv2.imread('1.png')gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)g原创 2020-11-27 15:29:55 · 2098 阅读 · 0 评论 -
python-opencv之直线检测
直线检测时通过HoughLines和HoughLinesP两个函数来实现的,这两个函数的区别是:第一个函数是使用标准的Hough变换实现,第二个函数是使用概率Huogh变换实习,因此函数名称里有一个P。HoughLinesP之所以称为概率版本的Huogh变换是因为它只通过分析点的子集并估计这些点属于一条直线的概率,这是标准Hough变换的优化版本。这个函数的计算代价较少,因此速度更快。import osimport cv2import numpy as npimage = cv2.imre原创 2020-11-27 15:00:20 · 2131 阅读 · 0 评论 -
python:迭代器详解及使用方法
目录一、什么是迭代器二、创建迭代器三、迭代器方法四、迭代器的应用:通过迭代器读取视频帧一、什么是迭代器迭代,字面理解就是多次重复做一件事情,类似于循环。迭代器是实现了__next__()方法的对象,并且这个方法在调用时不需要任何参数,它是访问可迭代序列的一种方式,通常从序列的第一个元素开始访问,直到所有的元素被访问才结束。迭代器只能前进不能后退。使用迭代器不需要事先准备好整个迭代过程中的所有元素。迭代器仅仅在迭代到某个元素时才计算该元素,儿在这之前或之后可以不存在或者被.原创 2020-11-18 11:38:48 · 1549 阅读 · 0 评论 -
kafka的使用1:消息队列的通信模式
目录一、点对点模式二、发布订阅模式消息队列的通信模式主要有两种:点对点模式 发布订阅模式一、点对点模式如下图为点对点模式。点对点模式通常是基于拉取或者轮询的消息传送模型,这个模型的特点是发送到队列的消息被一个且只有一个消费者进行处理。生产者将消息放入队列后,由消费者主动的拉取消息进行消费。点对点模型的优点是消费者拉取消息的频率可以由消费者自己控制。但是队列中是否有消息需要消费,消费者是无法自己感知的,因此在消费端需要额外的线程去监控。举个例子,我们平时去食堂吃饭。食堂的师原创 2020-11-16 20:04:13 · 716 阅读 · 0 评论 -
数据结构51:二叉堆的python实现
目录一、二叉堆操作的实现二叉堆初始化insert(key)方法delMin()方法一、二叉堆操作的实现二叉堆初始化采用一个列表来保存堆数据,其中表首下标为0的项无用,但为了后面代码可以用到简单的整数乘除法,仍保留它。class BinHeap: def __init__(self): self.heapList = [0] self.currentSize = 0insert(key)方法首先,为了保持“完全二叉树”的性质,新原创 2020-11-13 19:53:31 · 352 阅读 · 0 评论 -
数据结构50:二叉查找树及操作
目录一、二叉查找树Binary Search tree二、二叉查找树BST的性质三、二叉搜索树的实现“节点和链接结构一、二叉查找树Binary Search tree在ADT Map的实现方案中,可以采用不同的数据结构和搜索算法来保存和查找key,前面已经实现了两个方案:有序表数据结构+二分搜索算法 散列表数据结构+散列及冲突解决算法下面我们试试用二叉查找树保存key实现可以的快速搜索复习一下ADT Map的操作:Map():创造一个空映射 put(key, val):原创 2020-11-11 19:58:42 · 192 阅读 · 0 评论 -
数据结构49:优先队列与二叉树
目录一、优先队列Priority Queue二、二叉堆Binary Heap实现优先队列三、用非嵌套列表实现二叉堆四、完全二叉树的列表实现及性质五、堆次序Heap Order一、优先队列Priority Queue前面我们介绍了一种FIFO的数据结构:队列。队列有一种变体称为“优先队列”。例如,银行窗口取号排队,VIP客户可以插到队首。操作系统中执行关键任务的进程或者用户特别指定进程在调度队列中靠前。优先队列的出队跟队列一样从队首出队,但是在优先队列内部,数据项的次序却是原创 2020-11-11 10:46:22 · 673 阅读 · 0 评论 -
数据结构48:树的遍历
一、树的遍历Tree Traversals对一个数据集中的所有数据进行访问的操作称为“遍历Traversals”线性数据结构中,对其所有数据项的访问比较简单直接,按照顺序依次进行即可。但是由于树的非线性特点,使得遍历操作较为复杂。我们按照节点访问次序的不同来区分3种遍历。前序遍历(preorder):先访问根节点,再递归的前序访问左子树,最后前序访问右子树;中序遍历(inorder):先递归的中序访问左子树,再访问根节点,最后中序访问右子树;后续遍历(postorder):先递归的后原创 2020-11-05 20:04:51 · 268 阅读 · 0 评论 -
数据结构47:树的应用:表达式解析(二)
目录一、建立表达式解析树:实例二、利用表达式解析树求值:思路一、建立表达式解析树:实例全括号表达式:(3+(4*5))二、利用表达式解析树求值:思路从图示过程我们可以看到,创建树过程中关键的是对当前节点的跟踪: 创建左右子树可调用insertLeft/Right 当前节点设置值,可以调用setRootVal 下降到左右子树可以调用getLeft/RightChid 但是,上升到父节点,这个没有方法支持。 我们可以用一个栈来记录跟踪父节.原创 2020-11-02 20:28:11 · 833 阅读 · 0 评论 -
数据结构46:树的应用:表达式解析(一)
目录一、树的应用:解析树(语法树)二、树的应用:表达式解析创建表达式解析树过程:实例创建表达式解析树过程:规则一、树的应用:解析树(语法树)将树用于表示语言中句子,可以分析句子的各种语法成分,对句子的各种成分进行处理。语法分析树:主谓宾,定状补程序设计语言的编译:词法、语法的检查,从语法树生成目标代码 自然语言处理:机器翻译、语义理解二、树的应用:表达式解析我们还可以将表达式表示为树结构,叶节点保存操作数,内部节点保存操作符。全括号表达式((7+3)*.原创 2020-10-29 19:56:41 · 926 阅读 · 1 评论 -
解决python-opencv不能读取中文路径的问题
以opencv读取图像为例,其它的可以采用类似的方法:# 读取图像,解决imread不能读取中文路径的问题def cv_imread(filepath): cv_img = cv2.imdecode(np.fromfile(filepath, dtype=np.uint8), -1) return cv_img原创 2020-10-29 14:26:19 · 695 阅读 · 0 评论 -
百度开源NLP工具LAC
工具介绍LAC全称Lexical Analysis of Chinese,是百度自然语言处理部研发的一款联合的词法分析工具,实现中文分词、词性标注、专名识别等功能。该工具具有以下特点与优势:效果好:通过深度学习模型联合学习分词、词性标注、专名识别任务,整体效果F1值超过0.91,词性标注F1值超过0.94,专名识别F1值超过0.85,效果业内领先。 效率高:精简模型参数,结合Paddle预测库的性能优化,CPU单线程性能达800QPS,效率业内领先。 可定制:实现简单可控的干预机制,精准匹配用户原创 2020-10-28 19:08:28 · 974 阅读 · 0 评论 -
数据结构45:树的链表实现
实现树:节点链接法同样可以用节点链接法实现树每个节点保存根节点的数据项,以及指向左右子树的链接定义一个BinaryTree类,成员key保存根节点的数据项,成员left/rightChild则保存指向左/右子树的引用(同样是BinaryTree对象).代码实现:class Binarytree: def __init__(self, rootObj): self.key = rootObj # 根节点 self.leftChild =原创 2020-10-28 14:37:07 · 983 阅读 · 0 评论 -
数据结构44:树的嵌套列表实现
首先我们尝试用python列表来实现二叉树数据结构。递归的嵌套列表实现二叉树,由具有3个元素的列表实现,[root, left, right]:第1个元素为根节点的值; 第2个元素为左子树(所以也是一个列表); 第3个元素为右子树(所以也是一个列表);以下图为例,一个6个节点的二叉树,根是myTree[0],左子树myTree[1],右子树myTree[2]嵌套列表的优点:子树的结构与树相同,是一种递归数据结构。 很容易扩展到多叉树,仅需要增加列元素即可。我们通过定义一系列函数原创 2020-10-27 16:53:18 · 522 阅读 · 0 评论 -
anaconda使用教程
目录一、anaconda创建python虚拟环境的两种常用方法二、切换到不同的python环境三、常用的conda命令四、删除虚拟环境一、anaconda创建python虚拟环境的两种常用方法(1)直接软件端创建1、直接冲anaconda软件创建,首先打开软件,如图,点击左侧“Environments”,在红色框中可以看到你已经创建的环境,其中第一个”base(root)”是默认的环境,只要安装anaconda的都会有,下面的是自己创建的,如果你没有创建自己的环境,则只有第.原创 2020-10-25 17:35:25 · 20838 阅读 · 0 评论 -
pytorch入门到放弃4:nn.Module
在pytorch中定义神经网络时,所有的层和损失函数都来自 torch.nn,模型的构建继承的nn.Module,网络的构建一般采用下面的模板(以单个卷积层为例):import torch.nn as nnclass MyNet(nn.Module): def __init__(self, in_channel, out_channel, kernel_size, stride): super(MyNet, self).__init__() self.co原创 2020-10-24 16:50:26 · 127 阅读 · 1 评论 -
pytorch入门到放弃3:Dataset
pytorch为数据的读取和预处理提供了很多工具。其中,torch.utils.data.Dataset是代表这一数据的抽象类,我们可以定义自己的数据class来继承和重写这个抽象类,只需要定义__len__和__getitem__两个函数就行,其中__getitem__包含了数据的读取和处理:from torch.utils.data import Dataset, DataLoaderimport pandas as pdclass MyDataset(Dataset): de原创 2020-10-23 16:42:28 · 208 阅读 · 2 评论 -
数据结构42:什么是树
目录一、什么是树二、树的例子一、什么是树树是一种非线性数据结构。树在计算机科学的各个领域中被广泛应用:操作系统、图形学、数据库系统、计算机网络。跟自然界的树一样,数据结构树也分为:根、枝、叶等三部分。一般数据结构的图示把根放在上方,叶放在下方。二、树的例子首先分类体系是层次话的。树是一种分层结构,越接近顶部的层越普遍,越接近底部的层越独特。 分类树的第二个特征:一个节点的字节点与另一个节点的字节点之间是隔离、独立的。 分类树的第三个特征:每一个节点都具有唯一性。生.原创 2020-10-23 16:17:45 · 928 阅读 · 0 评论 -
数据结构41:查找与排序小结
目录一、查找二、排序一、查找在有序表或者有序表上的顺序查找,其时间复杂度为O(n)。 在有序表上二分查找,其最差复杂度为O(log n)。散列表可以实现常数级时间的查找,完美散列函数作为数据一致性校验,应用很广。区块链技术是一种去中心化的分布式数据库,通过“工作量证明”机制来维持运行。二、排序冒泡、选择和插入排序的复杂度是O(n^2)。 谢尔排序在插入排序的基础上进行了改进,采用了对递增子表排序的方法,其时间复杂度可以在O(n)和O(n^2)之间。 归并排序的时间复.原创 2020-10-23 15:40:29 · 1216 阅读 · 0 评论 -
数据结构40:冲突解决方案
目录一、冲突解决方案二、线性探测Linear Probing三、线性探测的改进四、冲突解决方案:再散列rehasing五、冲突解决方案:数据项链Chaining一、冲突解决方案如果两个数据项被散列映射到同一个槽,需要一个系统化的方法在散列表中保存第二个数据项,这个过程称为“解决冲突”。前面提到,如果说散列函数是完美的,那就不会有散列冲突,但完美散列函数通常是不现实的。解决散列冲突称为散列方法中很重要的一部分。解决散列的一种方法就是为冲突的数据项再找一个开放的空槽来保.原创 2020-10-22 19:55:40 · 4945 阅读 · 0 评论 -
OSError: sndfile library not found解决方法
centos在使用librosa库时报错:OSError: sndfile library not found网上的解决党法都是让装libsndfile,但是安装好之后也不行。原因:版本的原因解决方法:换个版本pip install librosa==0.6.0装好之后执行: import librosa又报错:ModuleNotFoundError: No module named 'numba.decorators'解决方法:把numba也换个版本:pip i..原创 2020-10-21 18:36:40 · 17943 阅读 · 11 评论 -
通过pip安装python第三方库时换源
在安装python库时,如果使用国外的源安装,经常特别的慢,并且可能会出错。解决方法:将安装的源换成国内的源(以清华源为例):pip install (要安装的库名称) -i https://pypi.tuna.tsinghua.edu.cn/simple也可以使用其他的源:清华 https://pypi.tuna.tsinghua.edu.cn/simple 中科大 https://pypi.mirrors.ustc.edu.cn/simple 阿里云 https://mirrors原创 2020-10-19 11:20:56 · 676 阅读 · 0 评论 -
数据结构38:完美散列函数
目录一、完美散列函数二、完美散列函数的更多用途三、散列函数MD5/SHA四、python的散列函数库hashlib五、完美散列函数用于数据一致性校验一、完美散列函数给定一个数据项,如果一个散列函数能把每个数据项映射到不同的槽中,那么这个散列函数就可以称为“完美散列函数”。对于对丁的一组数据,总是能想办法设计出完美的散列函数。但是如果数据项经常性的变动,很难有一个系统性的方法来设计对应的完美散列函数。当然,冲突也不是致命性的错误,我们会有办法处理的。获得完美散列函数的.原创 2020-10-16 14:25:11 · 1203 阅读 · 0 评论