2020年10个不错的Python库

这是第六届年度 Python 库排行榜。这个排行榜的依据是什么?规则很简单。咱们寻找的库须要知足下列条件:python

  1. 它们是在 2020 年推出或普及的。git

  2. 它们从发布后就一直有良好的维护。程序员

  3. 它们很是炫酷,很值得一看。

免责声明:今年,咱们的选择受到机器学习 / 数据科学库的极大影响,虽然有些库对非数据科学家来讲确实颇有用。另外,尽管咱们有 10 个主要的精选(以及一个奖励),但咱们仍是决定增长一个新的“荣誉提名”部分,以便公平对待咱们发现但又不能遗漏的其余库。github

1.Typer

2020年10个不错的Python库

你没必要老是要编写 CLI 应用程序,可是在编写 CLI 时,最好是无障碍的体验。继 FastAPI 巨大成功以后,Sebastián Ramírez 用一样的原则为咱们带来了 Typer:一个新的库,经过利用 Python 3.6+ 的类型提示功能,能够编写命令行界面。算法

这个设计确实使 Typer 脱颖而出。除确保你的代码被正确地记录下来外,你还能够经过最少的努力来得到一个带有验证的 CLI 接口。使用类型提示,你能够在 Python 编辑器中得到自动完成功能(好比 VSCode),从而提升工做效率。服务器

为加强 Typer 功能,它的内部是基于 Click 开发的,Click 是很是著名的,而且已经经过了实战检验。这意味着,它能够利用其全部的优势、社区和插件,同时用较少的样板代码从简单的开始,并在须要时添加更多的复杂性。网络

一如既往,它的文档真的很出色,能够做为其余项目的典范。这绝对是不容错过的做品。多线程

GitHub 项目地址:
https://github.com/tiangolo/typer架构

2. Rich

接着 CLI 的话题,谁说终端应用程序必须是单调的白色,若是你是一个真正的 hacker,就必须是绿色的?那黑色呢?框架

你想为你的终端输出加上颜色和样式吗?在一瞬间打开复杂的表格?轻松地展现华丽的进度条?Markdown?Emojis?Rich 都能知足你的要求。请看下面的截图,来了解一下它的功能。

2020年10个不错的Python库

毫无疑问,这个库将终端应用的使用体验提升到了一个全新的水平。

GitHub 项目地址:
https://github.com/willmcgugan/rich

3. Dear PyGui

就像咱们看到的那样,终端应用能够作到很华丽,但有时候这还不够,你须要一个真正的 GUI。为此,Dear PyGui 应运而生,它是流行的 Dear ImGui C++ 项目的 Python 移植。

Dear PyGui 使用了一种被称为即时模式的范例,它在电子游戏中很流行。这基本上意味着动态 GUI 是逐帧独立绘制的,无需持久化任何数据。这样,这个工具与其余 Python GUI 框架就有了本质上的区别。它性能优异,并用计算机的 GPU 来促进高动态界面的构建,这在工程、模拟、游戏或数据科学应用中是常常须要的。

2020年10个不错的Python库

不须要很是陡峭的学习曲线,Dear PyGui 就能使用,而且能够在 Windows 10(DirectX 11)、Linux(OpenGL 3)和 MacOS(Metal)上运行。

GitHub 项目地址:
https://github.com/hoffstadt/DearPyGui

4. PrettyErrors

简单的乐趣。这是让你思考的库之一:为何之前没有人想到这个问题?

PrettyErrors 只作一件事,并且作到了极致。在支持彩色输出的终端中,它将隐秘的栈跟踪转换为更适合人类眼睛解析的东西。不再用扫描整个屏幕来寻找异常的罪魁祸首了……如今,你就能够一眼发现它!

2020年10个不错的Python库

GitHub 项目地址:
https://github.com/onelivesleft/PrettyErrors

5. Diagrams

咱们程序员喜欢解决问题和编码。可是有时候,咱们须要把复杂的架构设计做为项目文档的一部分来向其余同事解释。传统上,咱们会求助于 GUI 工具,经过这种方式,咱们就能够在图表和可视化方面作一些努力,并将其用于演示和文档。可是,这种方式并不是惟一。

经过直接在 Python 代码中绘制云系统架构, Diagrams 容许你不使用任何设计工具。AWS、 Azure、 GCP 等多个云供应商均可以轻松地使用它的一些图标。这使得建立箭头和组变得很是简单。真的,它只有几行代码!

2020年10个不错的Python库

基于代码的 Diagrams 最好的地方是什么?经过标准 git,你能够跟踪版本控制的更改!开发人员将会很是高兴。

GitHub 项目地址:
https://github.com/mingrammer/diagrams

6. Hydra 与 OmegaConf

当进行机器学习项目的研究和实验时,老是有无数的设置须要尝试。配置管理能够变得很是复杂,而且在重要的应用程序中很是快速。要是能找处处理这类复杂问题的结构方法该多好啊。

Hydra 是一种工具,它可让你以一种可组合的方式构建配置,并从命令行或配置文件中覆盖某些部分。

为了说明使用该库所能简化的一些常见任务,假设咱们正在实验的模型有一个基础架构,而且有多种变体。经过 Hydra,就能够定义一个基础配置,而后使用它们的变体运行多个做业。

python train_model.py variation=option_a,option_b

Hydra 的表亲 OmegaConf 为分层配置系统的基础提供了一致的 API,支持 YAML、配置文件、对象和 CLI 参数等不一样的源。

它们是 21 世纪进行配置管理的必备之选。

7. PyTorch Lightning

任何可以提升数据科学团队生产力的工具都是价值连城。从事数据科学项目的人没有理由每次都要“从新发明轮子”,反复思考怎样才能更好地组织项目中的代码,怎样才能使用维护得很差的“PyTorch 样本代码”,怎样才能用潜在的控制来换取更高层次的抽象。

Lightning 经过将科学与工程脱钩来帮助提升生产力。这有点像 TensorFlow 的 Keras,从某种程度上说,这可让代码更简洁。但这并不会剥夺你的控制权。PyTorch 仍然是 PyTorch,可使用经常使用 API。

这个库能够帮助团队利用软件工程的良好实践,组织组件并明确职责,构建高质量的代码,从而方便地扩展到多个 GPU、 TPU 和 CPU 进行训练。

2020年10个不错的Python库

一个库,能够帮助数据科学团队中那些初级成员产生更好的结果,同时,更有经验的成员也会喜欢它,由于它能够在不放弃控制权的状况下,提升总体生产力。

GitHub 项目地址:

https://github.com/PyTorchLightning/PyTorch-lightning

8. Hummingbird

2020年10个不错的Python库

并不是全部的机器学习都是深度学习。不少时候,你的模型由 scikit-learn 中实现的比较传统的算法组成(好比随机森林),或者你使用梯度提高方法,好比流行的 LightGBM 和 XGBoost。

可是,在深度学习领域,已经有了许多进展。诸如 PyTorch 这样的框架正在以惊人的速度发展,硬件设备也在优化,以更快的速度进行更低功耗的张量计算。若是咱们可以利用这些努力,使咱们的传统方法运行得更快更有效,岂不美哉?

这就是 Hummingbird 的用武之地。Microsoft 的这个新库能够将你训练好的传统机器学习模型编译成张量计算。这样作很是好,由于这样就无需从新设计模型。

截至目前,Hummingbird 支持向 PyTorch、TorchScript、ONNX 和 TVM,以及各类机器学习模型和矢量器的转换。推理 API 也很是相似于 Sklearn 范式,它可让你重用现有的代码,可是将实现改成由 Hummingbird 生成。这是一个值得关注的工具,由于它得到了对模式模型和格式的支持!

GitHub 项目地址:

https://github.com/microsoft/hummingbird

9. HiPlot

几乎每一位数据科学家在其职业生涯中都会在某些时候处理高维数据。遗憾的是,人类的大脑并无足够的能力来直观地处理这类数据,因此咱们必须借助其余技术。

今年年初,Facebook 发布了 HiPlot,这是一个帮助发现高维数据中的相关性和模式的库,它使用平行图和其余图形方式来表示信息。这个概念在他们的发布博客文章中有过解释,可是这基本上是一个很好的方法来可视化和过滤高维数据。

2020年10个不错的Python库

HiPlot 是交互式的、可扩展的,你能够在标准 Jupyter Notebooks 中使用 HiPlot,也能够经过本身的服务器来使用 HiPlot。

GitHub 项目地址:

https://github.com/facebookresearch/hiplot

10. Scalene

随着 Python 库的生态系统愈来愈复杂,咱们发现本身编写的代码愈来愈依赖于 C 扩展和多线程代码。当涉及到测量性能时,这会成为一个问题,由于 CPython 中内置的分析器不能正确处理多线程代码和原生代码。

这时,Scalene 就来救场了。Scalene 是一个 CPU 和内存分析器,它针对 Python 脚本,可以正确地处理多线程代码,并区分运行 Python 与原生代码所花费的时间。无需修改代码,只须要用 Scalene 从命令行运行你的脚本,它就会为你生成一个文本或 HTML 报告,显示每行代码的 CPU 和内存使用状况。

2020年10个不错的Python库

GitHub 项目地址:
https://github.com/emeryberger/scalene

额外奖励:Norfair

Norfair 是一个可定制的轻量级 Python 库,用于实时对象跟踪。换句话来讲,它为每个被检测到的物体在不一样的帧中分配了一个惟一的 id,容许你在它们随时间移动的过程当中识别它们。有了 Norfair,只须要几行代码就能够为任何探测器添加跟踪功能。“任何探测器”?是的。不管对象的表现形式是什么样的:一个包围盒(4 个坐标),一个单点中心点,人体姿态估计系统的输出,或其余具备必定几率阈值以上变量的关键点的物体。

用于计算被跟踪物体与检测点之间距离的函数由用户定义,若是你须要,彻底能够自定义。

它的速度也很快,并且能够实时操做。然而,真正的优点在于它是很是模块化的,你能够利用你现有的检测代码库,只需几行代码便可添加跟踪功能。

GitHub 项目地址:https://github.com/tryolabs/norfair

荣誉提名

quart:一个具备 Flask 兼容 API 的异步网络框架。一些现有的 Flask 扩展甚至能够工做。

alibi-detect:监控生产模型中的异常值和分布漂移,适用于表格数据、文本、图像和时间序列。

einops:einops 在 2020 年普及,可让你为可读和可靠的代码编写张量操做,支持 NumPy、PyTorch、TensorFlow 等。Karpathy 推荐的,你还须要什么吗?

stanza:来自斯坦福的 60 多种语言的精确天然语言处理工具。多种可用的预训练模型用于不一样的任务。

datasets:来自 HuggingFace 的轻量级可扩展库,可轻松共享和访问数据集,以及用于天然语言处理等评估指标。

pytorch-forecasting:在现实世界的案例和研究中,利用神经网络简化时间序列预测。

sktime:提供专门的时间序列算法和 scikit-learn 兼容工具,用于构建、调整和评估复合模型。也能够查看他们的配套 sktime-dl 包,用于基于深度学习的模型。

netron:一个用于神经网络、深度学习和机器学习模型的可视化工具。支持的格式比我所知道的还要多。

pycaret:封装了几个常见的机器学习库,使工做效率大大提升,并节省了数百行代码。

tensor-sensor:经过改进错误信息和提供可视化,帮助你得到张量数学的正确维度。

原文连接:
https://tryolabs.com/blog/2020/12/21/top-10-python-libraries-of-2020/文章转自:InfoQ

相关文章
相关标签/搜索