当前位置: 首页 > news >正文

Python 十大开源Python库,看看你熟悉几个?

嗨害大家好鸭!我是芝士❤

对于码农来说,
关注的永远是新近有什么流行的、
既能解决问题又好用的利器。
本文就为你盘点十大开源Python库。

1、Pipenv

第一名非它莫属,
这个工具2017年初才发布,
但它已经能够影响每个Python开发者的工作流了,
更别提现在连Python.org都官方推荐它作为支持库的管理工具!

Pipenv最开始不过是大神Kenneth Reitz搞的周末项目,
本意是将npm或yarn这些包管理器的闪光点引入Python世界。

别管什么安装virtualenv、virtualenvwrapper,
管理requirements.txt文件,
更别提根据支持库的版本来确保复用性了。
有了Pipenv,
再也不需要用命令来增加、删除或更新支持库了,
一个Pipfile文件就能搞定所有的支持库。
这个工具会生成一个Pipfile.lock文件,
确保编译的库都是最终版,
还能避免因为漏掉一些边边角角的支持库而导致的bug。

当然,Pipenv还有其他不少好功能,
并且它的文档也很赞。
赶紧去了解一下,
用它来支持你的Python项目吧,
我们已经在Tryolabs上用上啦:)

2、PyTorch

要说2017年深度学习社区里面哪个库实现了大爆发,
那必须是PyTorch,
这个深度学习框架是Facebook 2017年才推出的。

PyTorch是基于流行一时的Torch框架构建和改进的,
与Lua相比,它是基于Python的。
近几年,
越来越多的人开始用Python开展数据科学工作,
PyTorch让深度学习变得更加平易近人了。

值得注意的是,
采用了全新动态计算图范式的PyTorch已经成为很多研究者的专用框架之一。
使用TensorFlow、CNTK和MXNet等框架写代码时,
必须先定义计算图,
这个计算图指定了代码运行的所有操作,
随后在框架中进行编译与优化,
使它能进行GPU并行处理,运算速度更快
这种范式被称为静态计算图。

它的好处在于可以利用各种优化,
而且,因为构建与执行是分开进行的,
此图一旦被构建即可在不同设备上运行。

然而,对于诸如自然语言处理等任务,
其工作量是可变的。

将图片应用于算法前,
可以将图片调整为固定尺寸,
但是无法将不同长度的句子进行类似的处理。

PyTorch和动态图的又是在于可在代码中使用标准Python控制指令,

在执行指令时定义动态图,
这就给了你更多自由,
对于多任务,这点至关重要。

和其他现代深度学习框架一样,
PyTorch还可以进行梯度计算,
它的运行速度极快,还可以扩展,
既然如此,干嘛不试试?

3、Caffe2

请添加图片描述
听上去有点不可思议,但是Facebook 2017年还发布了另一款重磅深度学习框架。

多年前,Caffe框架就已被广泛应用,并以无可比拟的性能和实战检测的代码库著称。然而,深度学习的最新趋势使得这个框架在某些方向陷入了停滞。Caffe2试图将Caffe引入现代世界。

它支持分布式训练及部署,包括多种移动平台、最新的CPU与CUDA适配的硬件。PyTorch更适合研究,Caffe2则适用于Facebook那种大规模部署。

还可以了解一下ONNX(微软与Facebook共同推出的开源项目,全称为Open Neural Network Exchange)近期的努力。用PyTorch构建和训练模型,再用Caffe2进行部署!是不是挺棒?

4、Pendulum

2016年,
Arrow荣登本榜,
这个库是为了让Python处理datetimes更简单。

2017年,轮到Pendulum了。

Pendulum的一大优势是内嵌式取代Python的datetime类,
可以轻易地将它整合进现有代码,
并且可以在需要它的时候才进行调用。

作者精心调校了时区,确保时区的正确,
还让每个实例都对时区敏感,并且默认使用UTC。
还有就是提供了扩展的timedelta,使datetime计算更加容易。

与现有的其他库不同,它提供了一个可预测行为的API,
这样就可以知道后面会发生什么。
如果你正开发使用datetimes的复杂项目,这个库能让你更轻松!想要了解更多,请查阅文档。

5、Dash

从事数据科学工作,
少不了使用Pandas、scikit-learn这些Python生态系统中的利器,

还有就是控制工作流的Jupyter Notebooks,
没的说,你和同事都爱用。

但是,要想将工作成果分享给不会用这些工具的人,
那该怎么办?
怎么才能构建一个人人能够轻松上手的界面,
来操控数据和可视化?
以前,为实现这一目的,
需要一个精通Javascript的前端专职团队来搭建GUI,
以后就用不着啦。

2017年发布的Dash是一个在纯Python环境中构建数据可视化网站应用的开源库。
基于Flask、Plotly.js和React构建,提供抽象层,
无需学习上述框架即可快速上手开发。
它在浏览器中渲染和响应,
因此适用移动端。

如果你想知道Dash都能实现什么效果,
这个样例库可以让你大饱眼福。

6、PyFlux

很多Python库都适用于数据科学和机器学习,
但当数据点是随着时间进化的矩阵时,
比如股价或从设备获取的测量数据等,这就是另一回事儿了。

PyFlux是专门处理时间序列的Python开源库。
时间序列是统计学与计量经济学的子域,
其目标是描述时间序列行为(主要是关于潜在成分或利息特征),并且预测未来它们如何演化。

PyFlux允许通过概率方式进行时间序列建模,
并且实现了几个像GARCH这样的现代时间序列模型。
是个不错的好东西。

7、Fire

做项目的时候经常需要制作命令行界面(Command Line Interface~CLI)。
除了传统的argparse,
Python还有类似click或docopt等工具。
谷歌今年发布的Fire,
使用另一个视角来解决同样的问题。

Fire是一个为任意Python项目自动生成命令行界面的开源库。
请注意,

重点是自动构建命令行界面,
基本上不需要再写代码或文档说明啦。
只需要调用一个Fire方法,
把它传输给需要生成命令行界面的内容即可
比如,函数、对象、类、字典,就算没有参数都可以,
这样Fire就会为所有代码生成一个命令行界面(CLI)。

请仔细阅读此指南,
通过例子理解它如何运作。
密切关注这个库,
它绝对能给你节省不少时间。

8、imbalance-learn

理想状态下,
我们有均衡的数据集可以用来训练模型,一切都很如意。可惜,真实世界不是这样的,现实任务更多是非均衡数据。比如,在预测伪造信用卡交易时,预期超过99.9%的绝大多数交易是合法的。如果只是训练朴素机器学习算法会让你很糟心,因此需要格外关注这类数据集。

好在这个问题已经解决了,
还有各种不同的技术解决方案。
Imbalanced-learn 这个Python包提供了多种技术解决方案,
可以让开发工作变得更轻松。
它与scikit-learn兼容,
并且是scikit-learn-contrib项目的一部分。有用!

9、FlashText

一般来说,查找或替换文本可以使用正则表达式。
正则表达式能妥妥的完成这项任务。
但是,需要查找几千个术语时,
正则表达式就慢死了。

FlashText能够更好地解决这个问题。
在作者最初的基准测试中,
它大幅提高了整个操作运行时间,
从5天缩减到5分钟。

FlashText的美妙之处在于不论查找多少术语
其运行时间都是一样的,
而正则表达式的运行时间则会随着术语数量的增加而线性增加。

FlashText证明了算法和数据结构设计的重要性,
由此可知,即便是简单的问题,
更好的算法也可以比更强的CPU有效。

10、Luminoth

声明:本库是由Tryolab的研发中心开发的。

当今世界图片满天飞,
一些应用急需理解这些图片的内容。
多亏深度学习技术的发展,
图像处理技术也取得了长足的进步。

Luminoth是基于TensorFlow和Sonnet构建的一个处理计算机视觉的Python工具箱。
目前,它通过快速R-CNN模型支持对象检测。

Luminoth不仅实现了这个特定模型,
它还是基于模块化构建的,可以扩展。
因此,
自定义现有组件或结合新的模型来解决复杂问题是可行的,
好好复用这些代码吧。

在构建深度学习模型时,
它提供了必要的开发工具:
转换图像数据为适用的格式
以供数据管道(TensorFlow的tfrecords)处理,
进行数据增强,
在一个或多个GPU上进行训练
(在处理大型数据集时,必须使用分布式训练)

运行评估指标,
轻松地在TensorFlow中实现可视化,
通过简单的API或浏览器界面部署训练模型,
供人操作。

还有,Luminoth可以很简单地整合谷歌云的机器学习引擎
就算你没有强大的GPU,
也可以和在本机一样,
轻松一个指令就能在云端进行模型训练。

在这里插入图片描述


更多优秀库:这些也不错

PyVips

可能你从没听说过libvips这个库。

这么说吧,

它是个像Pillow或ImageMagick这样的图像处理库,

并且支持很多图片格式。

然而,和其他库相比,libvips更快,

占用内存更少。

比如说,基准测试显示它比ImageMagick快3倍,

占用内存仅为1/15。

有关libvips的优势,请点此查阅。

PyVips是近期发布的Python版libvips,

兼容Python2.7和3.6,还有PyPy。

使用pip安装,内嵌式兼容绑定的老版本,无需修改代码。

如果在APP中进行图像处理,那一定要关注它。

Requestium

声明:本库为Tryolabs发布。
更多Python相关视频、资料加qun540305994免费获取
有时,你可能会在网上实现一些自动化操作。比如抓取网站,进行应用测试,或在网上填表,但又不想使用API,这时自动化就变得很必要。Python提供了非常优秀的Requests库,可以辅助进行这些操作。可惜,很多网站采用基于JavaScript的重客户端,这就意味着Requests获取的HTML代码中,根本就没有想要用于自动化操作的表单,更别提自动填表了!它取回的基本上都是React或Vue这些现代前端库在浏览器中生成的空DIV这类的代码。

可以通过反向工程处理JavaScript生成的代码,但是这需要花几个小时来编译,处理这些丑陋的JS代码。谢谢,还是算了吧。还有一个方法就是使用Selenium库,允许以程序化的方式和浏览器进行交互,并运行JavaScript代码。用了这个库就没啥问题了,但是它比占用资源很少的Requests慢太多了。

如果能以Requests为主,只有在需要Selenium的时候才无缝调用,这样不是更好?看看Requestium吧,它以内嵌方式取代Requests,而且干的不错。它还整合了Parsel,用它编写的页面查询元素选择器代码特别清晰。它还为诸如点击元素和确保在DOM中渲染内容这些通用操作提供了帮助。又一个网页自动化省时利器!

skorch

喜欢scikit-learn的API,但又得用PyTorch来进行工作?别担心,skorch这个打包器为PyTorch提供了像sklearn一样的界面。只要你熟悉这些库,就会觉得它的句法直白易懂。有了skorch,就可以将一些代码抽象化,从而把精力集中在真正重要的事上,比如干点儿数据科学。

你喜欢哪个呢?

在这里插入图片描述

相关文章:

Python 十大开源Python库,看看你熟悉几个?

嗨害大家好鸭!我是芝士❤ 对于码农来说, 关注的永远是新近有什么流行的、 既能解决问题又好用的利器。 本文就为你盘点十大开源Python库。 1、Pipenv 第一名非它莫属, 这个工具2017年初才发布, 但它已经能够影响每个Python开发…...

不愧是阿里开发的SpringBoot实战文档:入门+基础+进阶+项目,应有尽有

SpringBoot SpringBoot毋庸置疑,在Java开发中会因为项目流量太大需要切换到SpringCloud(SpringBoot)也会极为顺利。而且现在越来越多的公司都在采用SpringBoot,对SpringBoot关注和使用的开发者也越来越多了! SpringB…...

Vue(3)-vue中的Ajax、Vuex、路由及UI组件库

课程链接 目录4.Vue中的Ajax4.1.vue脚手架配置代理4.1.1.方法一4.1.2.方法二4.2.插槽5.Vuex5.1.理解Vuex5.1.1.概念5.1.2.何时使用?5.1.3.vuex原理5.2.vuex使用5.2.1.搭建vuex环境5.2.2.基本使用5.2.3.getters的使用5.2.4.四个map方法的使用5.2.5.模块化命名空间6.路…...

jwt 学习笔记

概述 JWT,Java Web Token,通过 JSON 形式作为 Web 应用中的令牌,用于在各方之间安全地将信息作为 JSON 对象传输,在数据传输过程中还可以完成数据加密、签名等相关处理 JWT 的作用如下: 授权:一旦用户登…...

网络安全实战从 0 到 1 彻底掌握 XXE

0x01 什么是 XXE个人认为,XXE 可以归结为一句话:构造恶意 DTD介绍 XXE 之前,我先来说一下普通的 XML 注入,这个的利用面比较狭窄,如果有的话应该也是逻辑漏洞。既然能插入 XML 代码,那我们肯定不能善罢甘休…...

如何安装 Composer

下载 Composer 安装前请务必确保已经正确安装了 PHP。打开命令行窗口并执行 php -v 查看是否正确输出版本号。 打开命令行并依次执行下列命令安装最新版本的 Composer: php -r "copy(https://install.phpcomposer.com/installer, composer-setup.php);"p…...

WPF 常用控件

WPF六种常用控件:布局控件、内容控件、带标题内容控件、条目控件、带标题条目控件和特殊内容控件(如:TextBox,TextBlock,Image等)。实例链接:WPF常用控件实例Window(窗体)Winodw窗体派生自ContentControl,有一个Content属性,里面可…...

河南工程学院蓝桥培训(2.21)

1&#xff0c;金币 461. 金币 - AcWing题库 #include <iostream> using namespace std; int n,a,ans,s; int main(){cin>>n;while(n--){if(a0)as;anss,a--;}cout<<ans;return 0; }...

新人使用Git获取远程仓库项目

前言 这篇git技术篇非常的简单基础&#xff0c;写它的原因很简单&#xff0c;因为现在很多的年轻人都很浮躁&#xff0c;刚入门就想学最牛x的&#xff0c;看不起基础的一些技术&#xff0c;比如说git操作、Linux基础命令&#xff0c;编程基础啥的。我身边有很多这样的年轻人&a…...

理解信号的

在日常生活中我们也经常面临许多的信号&#xff0c;手机通知、过红绿灯。。。这些信号在没有发生之前我们就知道这种信号产生我们需要干什么&#xff0c;那Linux里信号产生后&#xff0c;又怎么知道要做什么呢&#xff1f; -- 那当然是由程序员自己去设置啊 由于我们的用户空间…...

SpringSecurity学习(七)授权

授权 什么是权限管理 权限管理核心概念 SpringSecurity权限管理策略 基于URL地址的权限管理 基于方法的权限管理 一、权限管理 二、授权核心概念 在认证的过程成功之后会将当前用户登录信息保存到Authentication对象中&#xff0c;Authentication对象中有一个getAuthorities…...

【Vue3】模板语法

&#x1f3c6;今日学习目标&#xff1a;模板语法 &#x1f603;创作者&#xff1a;颜颜yan_ ✨个人格言&#xff1a;生如芥子&#xff0c;心藏须弥 ⏰本期期数&#xff1a;第三期 &#x1f389;专栏系列&#xff1a;Vue3 文章目录前言声明响应式状态插值文本Attribute&#xff…...

Linux基础

环境搭建&#xff1a;linux安装、远程连接常用命令&#xff1a;文件、目录、拷贝、移动、打包、压缩、文本编辑安装软件&#xff1a;文件上传、jdk、tomcat、mysql项目部署&#xff1a;Java应用、Python应用、日志查看、系统管理、用户权限Linux是一套免费使用、自由传播的操作…...

Spark-序列化、依赖关系、持久化

序列化 闭包检查 序列化方法和属性 依赖关系 RDD 血缘关系 RDD 窄依赖 RDD 宽依赖 RDD 任务划分 RDD 持久化 RDD Cache 缓存 RDD CheckPoint 检查点 缓存和检查点区别 序列化 闭包检查 从计算的角度, 算子以外的代码都是在 Driver 端执行, 算子里面的代码都是在 E…...

蓝桥杯刷题冲刺 | 倒计时16天

作者&#xff1a;指针不指南吗 专栏&#xff1a;蓝桥杯倒计时冲刺 &#x1f43e;马上就要蓝桥杯了&#xff0c;最后的这几天尤为重要&#xff0c;不可懈怠哦&#x1f43e; 文章目录1.青蛙跳杯子1.青蛙跳杯子 题目 链接&#xff1a; 青蛙跳杯子 - 蓝桥云课 (lanqiao.cn) X 星球的…...

Java设计模式-12 、建造者模式

建造者模式 &#xff08;将一个 复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。&#xff09; 建造者模式是一种创建型的模式&#xff0c;有一些对象的创建过程new 是很繁杂的。 什么时候去使用建造者模式 由上文可以得出在一些对象创建…...

一款全新的基于GPT4的Python神器,关键还免费

chartgpt大火之后&#xff0c;随之而来的就是一大类衍生物了。 然后&#xff0c;今天要给大家介绍的是一款基于GPT4的新一代辅助编程神器——Cursor。 它最值得介绍的地方在于它免费&#xff0c;我们可以直接利用它来辅助我们编程&#xff0c;真正做到事半功倍。 注意&#…...

上岸整理:2023前端面试题-vue,小程序,js,css

前端&#xff1a; 今年疫情结束后&#xff0c;前端行情不好&#xff0c;竞争压力很大&#xff0c;现在整理下个人认为面试很频繁的前端问题。 正题&#xff1a;无分类&#xff0c;因为面试官的问题也是随机的 一、基础 1、浏览器常见的报错信息与含义 2、304与204的区别&am…...

Linux下LED设备驱动开发(LED灯实现闪烁)

文章目录一、配置连接说明二、更新设备树&#xff08;1&#xff09;将led灯引脚添加到pinctrl子系统&#xff08;2&#xff09;设备树中添加LDE灯的设备树节点&#xff08;3&#xff09;编译更新设备树三、驱动开发与测试&#xff08;1&#xff09;编写设备驱动代码&#xff08…...

JavaEE-多线程中wait和notify都有哪些区别?

更多内容请点击了解 本篇文章将详细讲述wait和notify的区别&#xff0c;请往下看 目录 更多内容请点击了解 文章目录 一、wait和notify概念 二、wait()方法详解 三、notify()方法详解 代码如下&#xff1a; 3.1notifyAll()详解 四、wait和sleep的对比 一、wait和notif…...

JavaScript实现列表分页(小白版)

组件用惯了&#xff0c;突然叫你用纯cssJavaScript写一个分页&#xff0c;顿时就慌了。久久没有接触js了&#xff0c;不知道咋写了。本文章也是借与参考做的一个demo案例&#xff0c;小白看了都会的那种。咱们就以ul列表为例进行分页&#xff1a; 首先模拟的数据列表是这样的&a…...

Python调用GPT3.5接口的最新方法

GPT3.5接口调用方法主要包括openai安装、api_requestor.py替换、接口调用、示例程序说明四个部分。 1 openai安装 Python openai库可直接通过pip install openai安装。如果已经安装openai&#xff0c;但是后续提示找不到ChatCompletion&#xff0c;那么请使用命令“pip instal…...

Java开发 - 拦截器初体验

目录 前言 拦截器 什么是拦截器 拦截器和过滤器 Spring MVC的拦截器 Mybatis的拦截器...

【数据仓库-7】-- 使用维度建模的一些缘由

维度建模是一种用于设计数据仓库和商业智能系统的方法。以下是选择维度建模的两类理由。 1.传统方法,有背书且可靠 易于理解和使用:维度建模使用直观的图形和术语,使得非技术人员也能够理解和使用数据仓库和商业智能系统。 快速开发和部署:维度建模是一种迭代开发方法,能…...

【开发实践】在线考试系统(一) 生成错题知识点的思维导图

一、需求分析设计 笔者开发了一个在线考试系统&#xff0c;导师提出一个需求&#xff1a;添加对考试错题相关知识点的总结。 在question表中关联知识点的编号&#xff0c;题目可能关联多个知识点。这里笔者的设计是&#xff0c;只关联一个知识点&#xff0c;便于维护。 下面是知…...

Java Web 实战 17 - 计算机网络之传输层协议(2)

大家好 , 这篇文章继续给大家讲解 TCP 协议当中的一些操作 , 比如 : 滑动窗口、流量控制、拥塞控制、延时应答、捎带应答、面向字节流这几个提升 TCP 效率的操作 . 我们还会给大家分析 TCP 连接出现异常的时候 , 该如何处理 . 最后会将 TCP 和 UDP 进行比较 上一篇文章的链接也…...

MyBatis<3>:动态SQL的使用<if><trim><where><set><foreach>

动态SQL是MyBatis的强大特性之一&#xff0c;能够完成不同条件下不同的sql拼接。参考官方文档&#xff1a;https://mybatis.org/mybatis-3/zh/dynamic-sql.html<if>标签看这个场景&#xff0c;有必填字段 和 非必填字段 &#xff0c;当字段不确定是否传入的时候&#xff…...

【超好懂的比赛题解】暨南大学2023东软教育杯ACM校赛个人题解

title : 暨南大学2023东软教育杯ACM校赛 题解 tags : ACM,练习记录 date : 2023-3-26 author : Linno 文章目录暨南大学2023东软教育杯ACM校赛 题解A-小王的魔法B-苏神的遗憾C-神父的碟D-基站建设E-小王的数字F-Uziの真身G-电子围棋H-二分大法I-丁真的小马朋友们J-单车运营K-超…...

go-zero学习及使用中遇到的问题

go-zero学习及使用中遇到的问题1 go-zero入门--单体服务demo1.1 单体服务【官方示例】1.1.1 创建greet服务1.1.2 目录结构1.1.3 编写逻辑1.1.4 启动并访问服务1.2 修改GET入参1.2.1 去除options限制的入参值1.2.2 重启并访问服务1.3 添加post请求【新增方法】1.3.1 修改 greet/…...

CCF-CSP认证 202303 500分题解

202303-1 田地丈量&#xff08;矩阵面积交&#xff09; 矩阵面积交x轴线段交长度*y轴线段交长度 线段交长度&#xff0c;相交的时候是min右端点-max左端点&#xff0c;不相交的时候是0 #include<bits/stdc.h> using namespace std; int n,a,b,ans,x,y,x2,y2; int f(in…...