Python
文章平均质量分 95
jefferyLLLLL
小小程序员
展开
-
python yield关键字全面解析
你是否曾因处理的数据集过大而内存溢出?你是否曾因为处理各种复杂的函数状态而烦恼?It does help!本文聚焦yield generator, 帮助你解锁python进阶技法,写出更优雅的程序!先导概念为了更好的理解本篇推文的内容,读者必须先深刻理解以下三个概念:List comprehension (列表生成式),Generator (生成器),Iterator (迭代器)。List comprehensionList Comprehensions (PEP202),是python.原创 2022-05-19 09:42:51 · 1013 阅读 · 0 评论 -
python垃圾回收 (GC) 机制
Python 能够自动进行内存分配和释放,但了解 python 垃圾回收 (garbage collection, GC) 的工作原理可以帮助你写出更好更快的 Python 程序。Python 使用两种算法进行垃圾回收,分别是引用计数 (Reference Counting) 和分代回收 (Generational garbage collection)。引用计数引用计数,简而言之就是如果没有变量引用某一对象,那么该对象将会被回收。Python 中的每个变量都是对对象的引用,而不是对象本身。例如,赋值语原创 2022-02-20 15:34:04 · 9522 阅读 · 2 评论 -
python文件路径操作及pathlib库
对文件的路径操作是一个非常基础的问题,但也是一个至关重要的问题,优雅的路径操作不仅可以让代码可读性更高;还可以让用户避免很多不必要的麻烦。python中路径操作常用的几种方式重要包括:字符串拼接、os.path、以及python 3.4中新增的面向对象的路径操作库 pathlib。字符串拼接字符串拼接是最原始、最不优雅的路径操作方式,也是很多初学者偏爱的方式,但是强烈推荐使用以下两种更优雅的路径操作方式。因为不推荐字符串拼接,所以下面简要列举一下常见的拼接方式(更多字符串操作方法请见Python字符串处原创 2021-12-27 09:00:00 · 2469 阅读 · 0 评论 -
python导入机制及importlib模块
文章目录写在篇前import 关键字先导概念namespace & scopeModule & Packagesmodulepackagesregular packagenamespace packageimportlibLoaders & Findersimport hooksimportlib.abcimportlib.resources参考资料写在篇前这篇博客的雏形,严格来讲,在我脑海中浮现已有近一年之久,起源于我之前在写一个python模块并用jupyter notebo原创 2021-10-05 11:40:25 · 5136 阅读 · 4 评论 -
python绘制dotplot
文章目录安装模块导入数据准备写在篇末 R语言不少库都可以方便的画dotplot,但是低频使用R这么多年,我依旧觉得R不是一门真正的编程语言。目前,在python中绘制dotplot貌似没有很轻量、方便的库,因此工作之余写了这个python_dotplot包,方便自己也希望能够方便他人吧。安装可以通过pypi快速安装:pip install python_dotplot该package当然可能存在一定的bug,所以也会处于不断迭代的过程中,版本更新可以在github realease 获得最新信原创 2021-04-20 10:41:31 · 3263 阅读 · 3 评论 -
python subprocess-更优雅的创建子进程
简介如PEP324所言,在任何编程语言中,启动进程都是非常常见的任务,python也是如此,而不正确的启动进程方式会给程序带来很大安全风险。Subprocess模块开发之前,标准库已有大量用于进程创建的接口函数(如os.system、os.spawn*),但是略显混乱使开发者难以抉择,因此Subprocess的目的是打造一个“统一”模块来提供之前进程创建相关函数的功能实现。与之前的相关接口相比,提供了以下增强功能:一个“统一”的模块来提供以前进程创建相关函数的所有功能;跨进程异常优化:子进程中的异常原创 2021-01-29 21:51:44 · 3111 阅读 · 2 评论 -
Python collection模块
collections模块主要实现了一些container datatypes(容器类型),作为builtin容器类型dict、list、set和tuple等的一个补充,包括以下新定义的容器类型:类型用途namedtuple()factory function for creating tuple subclasses with named fieldsdeque...原创 2020-02-29 22:30:49 · 419 阅读 · 0 评论 -
JupyterLab 配置远程python、R环境(与Jupyter兼容)
官网如是介绍JupyterLab: JupyterLab is the next-generation web-based user interface for Project Jupyter。可见,Jupyter Lab是Jupyter的下一代计划,其包含了Jupyter Notebook所有功能,可作为一种基于web的集成开发环境,你可以使用它编写notebook、操作终端、编辑mark...原创 2019-12-07 22:49:42 · 6623 阅读 · 2 评论 -
python函数式编程之functools、itertools、operator详解
文章目录写在篇前itertools无穷迭代器最短停止迭代器排列组合迭代器operator基本运算符函数属性查询functoolspartial & partialmethodcmp_to_key@total_ordering@lru_cache@singledispatch附录可变对象 & 不可变对象闭包reference写在篇前 这篇博客主要介绍什么是函数式编程、在Pyth...原创 2019-10-21 09:18:14 · 1431 阅读 · 0 评论 -
【机器学习】NMF(非负矩阵分解)
写在篇前 本篇文章主要介绍NMF算法原理以及使用sklearn中的封装方法实现该算法,最重要的是理解要NMF矩阵分解的实际意义,将其运用到自己的数据分析中!理论概述 NMF(Non-negative matrix factorization),即对于任意给定的一个非负矩阵V,其能够寻找到一个非负矩阵W和一个非负矩阵H,满足条件V=W*H,从而将一个非负的矩阵分解为左右两个非负矩阵的乘积。...原创 2018-11-22 20:19:29 · 51412 阅读 · 5 评论 -
matplotlib(六)三维作图
文章目录写在篇前三维绘图函数LinePlotScatterPlotWireframePlotSurfacePlotContourPlotFilledContourPlotPolygonPlotBarPlotText写在篇后写在篇前 matplotlib也支持三维作图,但是相对于matlab来讲,感觉功能更弱。当然话说回来,三维作图用的场景相对也更少,所以呢,有一定的知识储备就够了。matpl...原创 2018-11-25 21:41:39 · 7392 阅读 · 1 评论 -
Tensorflow Serving部署tensorflow、keras模型详解
写在篇前 本篇介绍如何使用Tensorflow Serving组件导出训练好的Tensorflow模型,并使用标准tensorflow model server来部署深度学习模型预测服务。tensorflow model server主要负责管理新的导出模型并运行gRPC服务以方便终端用户调用。下面的代码都可以在我的实战项目github CaptchaIdentifier或者jefferyUs...原创 2019-01-08 13:56:53 · 20595 阅读 · 14 评论 -
python函数详解
写在篇前 函数能提高应用的模块性,和代码的重复利用率,是编程必须具备的基本抽象能力。python函数更是奇妙灵活,与很多特性值得探讨,本篇文章就来详细看看python 函数那些巧妙之处。首先,在篇前简单说说python函数的形式。比如说我们要实现一个函数:计算一个数m的n次方,那么函数可以定义如下:def exponentiation(m, n): return m^n# def...原创 2019-02-22 20:33:59 · 1673 阅读 · 0 评论 -
Python面向对象、魔法方法
文章目录写在篇前封装继承单继承Mixin抽象多态特殊方法&属性特殊属性魔法方法辅助知识OOP实用函数迭代器生成器写在篇前 OOP(Object Oriented Programming),即面向对象的程序设计,不同于传统的面向过程的程序设计,它大大地降低了软件开发的难度,使编程就像搭积木一样简单,是当今编程以及模式设计一股势不可挡的潮流。OOP达到了软件工程的三个主要目标:重用性、灵...原创 2019-03-04 13:47:01 · 1333 阅读 · 0 评论 -
python装饰器详细剖析
文章目录函数装饰器基本函数装饰器传参函数装饰器类装饰器基本类装饰器传参类装饰器装饰器执行顺序内置装饰器@abstractmethod@property@classmethod@staticmethod内置装饰器小结装饰器属性还原写在篇后 装饰器函数其实是这样一个接口约束,它必须接受一个 callable 对象作为参数,然后返回一个 callable 对象,其作用就是为已经存在的函数或对象添加额...原创 2019-04-05 13:34:50 · 756 阅读 · 0 评论 -
python描述器深度解析
写在篇前 在之前的博客Python面向对象、魔法方法中曾简单提到魔法方法__get__、__set__、__delete__,但只给出一个例子,这篇文章将对它做一个更详细的总结,因为这三个魔法函数表征着一个专业术语描述器。什么是描述器 简而言之,如果一个类中定义了__get__、__set__、__delete__中的任意一个,这个类的实例就可以叫做一个描述器,其功能强大,应用广泛,它可...原创 2019-04-09 20:35:23 · 1121 阅读 · 0 评论 -
python meataclass详解
写在篇前 这篇文章主要介绍python3中metaclass(元类)的概念及其应用。简而言之,元类就是创建类的东西,而type就是Python的内建元类。如此一来,在python中,先要定义元类,然后利用元类创建类,最后根据类创建实例。一切皆为对象 相信任何一个python爱好者,从业者都听过"在python中,一切皆为对象"这句话,但为什么探讨元类前要先抛出这个话题呢?因为我觉得只有当...原创 2019-06-16 12:04:58 · 752 阅读 · 0 评论 -
python Typing模块-类型注解
写在篇前 typing 是python3.5中开始新增的专用于类型注解(type hints)的模块,为python程序提供静态类型检查,如下面的greeting函数规定了参数name的类型是str,返回值的类型也是str。def greeting(name: str) -> str: return 'Hello ' + name 在实践中,该模块常用的类型有 Any, ...原创 2019-06-26 13:57:31 · 18184 阅读 · 14 评论 -
python Logging日志记录模块详解
写在篇前 logging是Python的一个标准库,其中定义的函数和类为应用程序和库的开发实现了一个灵活的事件日志系统。Python logging 的配置由四个部分组成:Logger、Handlers、Filter、Formatter。本篇博客将依次介绍这四个主要部分以及logging的基本应用。 在开始之前,我们有必要先了解一下,什么时候我们才有必要使用logging模块,什么时候抛出...原创 2019-07-14 09:18:04 · 11125 阅读 · 8 评论 -
万字长文深度解析python 单元测试
文章目录unittest基本概念基本用法命令行操作组织测试用例跳过测试&预期错误subTestunittest小结doctest先谈pydocdoctest与unittestMock初步理解Mock object使用Mock object定制化Mock objectreturn_valueside_effect配置Mockpatchas a Decoratoras a Context Ma...原创 2019-08-10 21:15:58 · 764 阅读 · 0 评论 -
python scipy 稀疏矩阵详解
文章目录稀疏矩阵格式coo_matrixcsr_matrixcsc_matrixlil_matrixdok_matrixdia_matrixbsr_matrix实用函数经验总结稀疏矩阵格式coo_matrix coo_matrix是最简单的稀疏矩阵存储方式,采用三元组(row, col, data)(或称为ijv format)的形式来存储矩阵中非零元素的信息。在实际使用中,一般coo_m...原创 2019-08-25 16:40:38 · 41840 阅读 · 20 评论 -
python hashlib 哈希算法
写在篇前 哈希加密算法应用非常广泛,包括数字签名,身份验证,操作检测,指纹,校验和(消息完整性检查),哈希表,密码存储等。在密码学中,好的哈希算法应该满足以下两个条件:一是无法从哈希值解密原始消息;二是,更改原始消息的一个字节,哈希消息会发生非常大的变化。本篇博客主要探讨一下python标准库hashlib的使用,最后介绍一下另外两个相关的 标准库hmac和base64。 哈希函数以可...原创 2019-09-28 23:04:31 · 2458 阅读 · 0 评论 -
nginx、uwsgi部署django项目理论+实战
基本环境: Ubuntu 16.04.4 LTSpython 3.5 virtualenvdjango project deployable理论分析原创 2018-05-29 18:15:00 · 581 阅读 · 0 评论 -
【机器学习】层次聚类
写在篇前 层次聚类(hierarchical clustering)是一种通用的聚类算法之一,它通过自下而上合并或自上而下拆分来构建嵌套聚类。这种簇的层次结构表示为树(或树状图),树的根汇聚所有样本,树的叶子是各个样本。本篇博客会简述层次聚类的原理,重点是使用sklearn、scipy、seaborn等实现层次聚类并可视化结果。原理简述 看到一篇详细讲层次聚类原理的文章层次聚类算法的原理...原创 2018-11-18 18:20:56 · 2923 阅读 · 0 评论 -
【机器学习】Kmeans聚类
写在篇前 Kmeans算法是一种经典的聚类算法,属于无监督学习的范畴。所谓聚类,即指对于给定的一个样本集,按照样本之间的距离大小,将样本集划分为K个簇,且让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。优点:原理简单速度快对大数据集有比较好的伸缩性缺点:需要指定聚类数量K对异常值敏感对初始值敏感原理概述算法流程 ...原创 2018-11-11 19:26:18 · 1943 阅读 · 0 评论 -
【机器学习】降维技术-PCA
写在篇前 PCA即主成分分析技术,又称主分量分析,旨在利用降维的思想,把多指标转化为少数几个综合指标,其主要目的是为了减少数据的维数,而同时保持数据集最多的信息。这篇文章主要是整理PCA算法的理论、思想,然后通过Scikit-learn中的例子讲解PCA的使用。数学基础 首先,我们需要了解几个重要的数学概念,其中均值、标准差、方差协方差应该是比较好理解的,主要是要注意对特征向量和特征值的...原创 2018-11-07 17:21:32 · 1292 阅读 · 1 评论 -
pandas 数据分析常用技巧
最近在做一些真实实验数据的处理,用到了pandas库,也着着实实感受到了pandas的魅力,这篇博客做个总结以及扩展。 Pandas基于两种数据类型:series与dataframe。series是一个一维的数据类型,其中每一个元素都有一个标签,标签可以是数字或者字符串;一个dataframe是一个二维的表结构,Pandas的dataframe可以存储许多种不同的数据类型,并且每一个坐标...原创 2018-07-27 15:48:20 · 908 阅读 · 1 评论 -
python pickle模块:数据序列化和反序列化
pickle模块是python中数据序列化和反序列化的一个包,该模块提供了一套算法,用于对一个Python对象进行serializing(序列化为字符串)和de-serializing(从字符串构建对象),这个过程分别叫做pickle和unpickle。 pickle主要提供了四个功能:dumps,loads,dump,load, 两两配对使用,下面分别说明 :dumps、loads函...原创 2018-07-27 10:59:07 · 1195 阅读 · 0 评论 -
Matplotlib(三) rcParams 自定义样式控制
在上一篇 python matplotlib入门(二) Matplotlib 作图生命周期 中,其中一个重要环节是 自定义图像(Customizing Matplotlib),从某种角度来讲,其实这几乎包括了我们绘图80%的工作,这篇博客就来探讨如何DIY我们的图像。 rcParams 可以在python脚本中动态更改默认的rc设置,或者从python shell以交互方式更改...原创 2018-07-30 12:31:25 · 8214 阅读 · 0 评论 -
Matplotlib(二)绘图生命周期
上篇 python matplotlib入门(一)主要介绍了matplotlib的workflow, 这一篇将主要介绍 matplotlib 绘图的生命周期,只有了解了matplotlib 的内部工作方式,后面具体的操作才能够得心应手。为了方便阐述,我们将从一些原始数据开始,最后保存一个自定义可视化图形。在此过程中,我们将尝试使用Matplotlib突出一些简洁的功能和最佳实践。 整个...原创 2018-07-29 12:31:03 · 2974 阅读 · 0 评论 -
linux 环境下配置python虚拟环境
系统Ubuntu 16.0.4, 环境自带python2.7和python3.5,现在我想创建 python3.5的虚拟环境,下面介绍最好的方法。 1、使用update-alternatives命令切换python版本sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100sudo...原创 2018-04-27 00:08:55 · 1680 阅读 · 0 评论 -
windows环境下python 虚拟环境的创建和使用(virtualenvwrapper)
Python虚拟环境是指创建一个隔绝的Python环境,说的再直白一点就是将你的python复制一部分放在你硬盘的拎一个地方,一般在你进行一项具有毁灭性的测试或则你需要一个较少变动的环境时,你会考虑创建一个虚拟环境。 我们可以使用virtualenv创建一个包含所有必要的可执行文件的文件夹,用来使用Python工程所需的包。但是我们不推荐使用virtualenv,而...原创 2018-04-14 23:16:15 · 2231 阅读 · 0 评论 -
Linux环境下 安装python3
今天在阿里云买了一个Ecs来玩玩, 服务器是Linux版本, 登录服务器之后发现 python是python2.7,所以就打算自己安装一个python3。因为是安装完成之后才打算写这个文章的,所以安装截图就没有了,但是绝对步步都齐。 安装步骤如下: (1)wget https://www.python.org/ftp/p...原创 2018-04-01 00:36:01 · 10359 阅读 · 5 评论 -
Python 面向对象编程基础
Python面向对象编程简介:面向对象编程——Object Oriented Programming,简称 OOP,是一种程序设计思想。OOP 把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数(方法)。简单例子:class Student(object): def __...原创 2018-03-12 22:08:15 · 210 阅读 · 0 评论 -
Python字符串处理
Python字符串处理Python处理字符串是一个基本操作,需要熟记于心, 这篇python字符串处理文章总结了大多数常用的字符串处理函数、策略,供大家以及自己参考使用。Part I 常见处理函数1. String.find(sub, start=0, end=len(string))检测sub是否包含在string中,如果是返回(第一个sub)开始的索引值,否则返回-1.2. String.in...原创 2018-03-07 21:56:36 · 6169 阅读 · 5 评论 -
matplotlib(五)排版布局
网格布局方式subplots()最常见的网格排版方式,一次性定好所有AxesGridSpec复杂网格排列SubplotSpec为给定GridSpec中子图指定位置 subplot2grid()类似于subplot(),但使用基于0的索引并允许子图占据多个单元格。 subplotsimport matplotlib.pyplot as pltimpor...原创 2018-08-04 11:47:02 · 13524 阅读 · 0 评论 -
matplotlib(四)核心模式以及注意事项
matplotlib拥有广泛的代码库,对许多新用户来说可能令人生畏。但是,大多数matplotlib用法都可以通过一个相当简单的概念框架和一些重要知识来理解,所以,这篇博客主要介绍一些基本的使用模式、最佳实践以及注意事项,让你更深刻的认识matplotlib的工作方式。matplotlib一般概念提醒一句话:everything in matplotlib is organized...原创 2018-07-31 17:14:37 · 4152 阅读 · 0 评论 -
Matplotlib(一)工作流程
Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形 。通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。在matplotlib中使用最多的模块就是pyplot,pyplot非常接近Matlab的绘图实现,而且大多数的命令与Matlab类似。 从今天起呢, matp...原创 2018-07-27 19:50:09 · 1329 阅读 · 0 评论 -
Anaconda常用命令
Anaconda常用命令 这个仅仅是一个代码列表,方便查询,保持持续更新# 包管理conda install packagenameconda install packagename =1.10conda installl numpy pandas scipyconda upgrade --allconda remove packagename conda search pac...原创 2018-10-31 16:10:20 · 847 阅读 · 0 评论 -
python pip修改安装镜像源
pip 默认的安装源是真的慢,所以我们可以换成国内的一些优质的安装源。但是需要注意的一点是,国内源有可能不能及时获取最新的包。Linux创建或修改文件:~/.pip/pip.conf[global]index-url = https://pypi.tuna.tsinghua.edu.cn/simplewindows创建或修改文件:C:\Users\xx\pip[global]...原创 2018-10-08 11:41:36 · 6570 阅读 · 0 评论