最新十大頂級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進行了合作,允許你輕鬆定義複雜的數據流,同時為分佈式計算提供開箱即用的支持。


分享到:


相關文章: