最新十大顶级Python库

欢迎回到我们第5年度版的顶级Python库列表。在这里,你会发现一些开源世界中隐藏的珍宝,它们会让你开始你的新项目,或者让你现有的项目更有趣。你会发现机器学习和非机器学习库,所以我们涵盖了所有内容。

我们希望你能像我们创造它一样喜欢它,所以我们开始吧!

1.HTTPX

作为一个经常与API进行交互的Python死忠粉,你可能比较熟悉requests库。然而,如果你正在使用异步范式,那requests将不会为你带来任何好处,异步范式在高性能现代应用程序中已经越来越常见。

为了解决这个问题,了不起的Tom Christie和他的合作者为我们带来了HTTPX,它是一个未来十年的下一代异步HTTP客户端。

HTTPX跟requests一样好用, 它为你提供了requests的标准特性以及对HTTP/2和HTTP/1的支持。其他特性包括使用ASGI协议直接调用Python web应用程序,以及完全类型注释。

你需要同时进行大量请求吗?那么HTTPX就是新的首选答案。

注意:HTTPX仍然处于alpha版本中,目前只作为异步客户端进行开发。在未来,同步客户端将被重新引入。

2. Starlette

Starlette是一个轻量级的ASGI框架/工具包,具有一系列的特性,包括WebSocket和GraphQL支持,进程内后台任务和真正的高性能。所有这些都带有一个100%类型注释的代码库和零硬依赖项。你可以把它看作是一个非常轻量的、现代的和异步的Flask版本。

它还允许你灵活地选择是将其作为一个完整的web框架使用,还是仅仅作为一个ASGI工具包使用。

它运行在一个ASGI服务器上面,比如uvicorn,这使得uvicorn去年也进入了这个列表。

如果你正在考虑开发一个新的web应用程序,那么你一定要给Starlette一个大放异彩的机会。

3. FastAPI

Starlette很棒,但它非常简约,没有主见。这给了你很大的自由,但有时候,你只是需要一个框架来把事情快速做好。

Sebastian Ramirez创建的FastAPI正是这样的库。它的字里行间都透着快速。

这个用于使用Python特性构建API的新框架具有非常高的性能和基于OpenAPI标准的自动化的交互文档。它默认支持Swagger UI和ReDoc,允许你直接从浏览器调用和测试你的API,从而加快开发时间。使用这个框架构建API既快速又简单。

这个库还利用了现代Python的最佳实践之一:类型提示。FastAPI对很多东西都使用了类型提示,但是其最酷的特性之一是自动数据验证和转换,由Pydantic提供技术支持。

在Starlette的基础上构建,FastAPI的性能与NodeJS和Go相当,而且它还支持原生WebSocket和GraphQL。

最后,但并非最不重要的是,它拥有最好的开源库技术文档。说真的,看看吧!

4. Immutables

MagicStack的伙伴们回来了,为我们带来了一个简单而优雅的不可变映射类型(“frozen dict”)。

谁能从这个库中受益呢?好吧,它的底层数据结构是一个哈希数组映射特里 (HAMT),主要在Haskell等函数式编程语言中使用。最有趣的部分是,他们为set()和get()操作都提供了O(log N)的性能,这对于相对较小的映射来说其实就是O(1)。

如果你的应用程序使用了更大的字典,并且可以提高性能,那这个很酷的新库可能值得你查看一下。

5. Pyodide

Pyodide是这些让你心醉神迷的项目之一。它使用WebAssembly将Python科学堆栈引入到浏览器,将科学计算提升到了一个全新的水平。

你想要用NumPy处理一些数字吗?想要使用Pandas处理一些较大的DataFrame吗?想要使用Matplotlib对你的结果绘制图表吗?多亏了Pyodide,你现在可以在你的浏览器中轻松实现所有这些功能,甚至更多。

更好的是:这个包目录列出了超过35个当前可用的包。真的,只有你想不到的,没有做不到的。

6. Modin

Modin的座右铭是通过改变一行代码来规模化你的Pandas工作流,而且它确实是那样简单。你只需安装Modin,改变你的导入语句,你就能在拥有多核处理器的现代笔记本电脑上获得高达4倍的速度优势。

它是怎么做到的呢?我们会让你知道这个秘密的。Modin实现了自己的modin.pandas.DataFramemode对象,它是一个轻量级的并行DataFrame。这个对象的使用是透明的,因为它与Pandas是API兼容的,并且在后端,它会使用诸如Ray或Dask之类的计算引擎来分发数据和计算。

有时候,你只需要对你的代码做一些小的更改,你就可以获得很大的速度提升,Modin就是这样的一个证明。

7. Streamlit

在每个复杂的机器学习项目中,总会有那么一个时刻,此时,你最终需要手动地与模型和数据进行交互。

与花费数小时和数千行代码来开发一个应用程序不同,Streamlit允许你快速地构建应用程序来共享你的模型和分析。创建一个UI来与其进行交互,并且视觉化你的数据,现在你的模型的输出就变得非常容易了。

Streamlit提供了一种从Python脚本跳到生产级应用程序的快速方法,你只需在代码中添加几行即可。TensorFlow、Keras、PyTorch、Pandas -凡是你能想到的,Streamlit都能与各种数据科学相关的工具一起工作。

8. Transformers

如果你正在从事任何与机器学习相关的工作,那么你可能已经听说了在过去一年中围绕自然语言处理(NLP)出现的重要进展。

许多新的高性能模型,如BERT、XLNet或roBERTa,已经被开发出来,显著地促进了各种NLP任务(如文本分类、机器翻译、命名实体识别等)的艺术状态的发展!

对于实践者来说,拥有能够使用这些模型为生产应用程序提供动力的易于使用的工具是很重要的。对于研究人员来说,重要的是要有能够调整模型内部机制的库,这样他们就可以开发和试验新的模型,而不必浪费太多的时间编写样板代码。

Hugging Face的了不起的人员为我们带来了transformers,一个包含了已打包的、预训练的和直接使用的大多数现代NLP模型的实现。TensorFlow 2.0和PyTorch之间的互操作性帮助该库迅速成为了一个行业标准,从而为研究和生产应用程序提供了支持。这个库也在快速壮大,经常会有一些新模型被引入其中,并且这些模型是由研究人员开发的。

锦上添花: Hugging Face团队还开发了 DistilBERT,它是一种更小、更快、成本更低、更轻量的BERT的浓缩版本。

你还在犹豫要不要使用 Hugging Face / Transformer来切换到现代NLP吗 ?今天是你的幸运日,你可以查看它们的很棒的在线演示并惊叹其能力之强大。

9. Detectron2

Facebook的人工智能研究团队(FAIR)一直在推进着计算机视觉(CV)的极限,他们为对象检测、姿态估计、语义/实例分割,以及最近的全景分割等任务开发了新的模型。

解决很多这些问题的可能性就像几年前的科幻小说一样。我们只能对FAIR满怀期待,这一次他们又一次成功地震撼了全场。

Detectron2是备受期待的Detectron的续集,它是用PyTorch从头开始构建的,并且打包了最先进的计算机视觉算法。

这样的库进行工程设计起来特别困难,因为它们必须支持不同类型的用例。就像Hugging Face的Transformers的例子一样,FAIR团队在设计Detectron2时做得很好,他们采用了一种非常灵活和模块化的方式,这使它非常适用于CV研究应用程序。同时,它的使用极其简单,对于那些只想快速获得结果而不想涉及内部机制的人来说非常理想。是的,你可以使用Detectron2来让你的软件只用几行Python代码就能“理解”图像。

时间将会告诉我们,Detectron2是否能够成功地产生一个充满活力的社区,但是到目前为止,这看起来很有希望。它很可能会成功地成为CV应用程序的“首选”解决方案,因为在它的社区中,新的、更快、更好的模型正在被贡献出来,并且这些模型是由研究人员创建的。如果你正在从事任何类型的CV工作,请密切关注它的社区。

10. Metaflow

这是一个初来乍到的新库,太新以至于它差点进不了这个2019年名单!但是不要被愚弄了:尽管它是在不到两周前发布的,但它已经被Netflix内部测试过了,直到经过两年的改进,他们才决定开放源代码。

Metaflow是一个Python库,用于帮助数据科学家和工程师构建用于真实世界的现实生活项目。它主要的专注点是减轻非技术数据科学家的技术负担,例如计算资源、并行执行、架构设计和版本控制等。Netflix与AWS进行了合作,允许你轻松定义复杂的数据流,同时为分布式计算提供开箱即用的支持。


分享到:


相關文章: