Python又添一大科學計算庫,PyArmadillo發布
目前,Python 擁有眾多科學計算庫, 最為著名的如 NumPy 和 SciPy。但從代數運算以及使用語法來看, 這些庫往往會帶來不必要的繁瑣,沒辦法直觀地管理其中的數據類型。因此將 Armadillo 作為底層的 PyArmadillo 庫基于這一點,重新塑造了類似 Matlab 和 Octave 等簡單易用的語法。此外,由于 pybind11 的用法相對簡單,PyArmadillo 將 pybind11 用來連接 C++ 與 Python。該庫已于近日正式發布。
作為 C++ 中與 Eigen 并駕齊驅的一大科學計算庫, Armadillo 因其簡單易用的特性深受廣大程序員和科學家的喜愛,也獲得了 Facebook、NASA、Boeing、Siemens、Deutsche Bank、MIT、 CMU、Stanford 等公司和高校的廣泛使用。此外, Armadillo 的主作者和 Rcpp 的主作者聯合開發了 RcppArmadillo,作為 R 語言中的主要科學計算庫,在 Github 每月下載量高達 97.2 萬次。除此以外,Armadillo 還在著名開源機器學習庫 mlpack 中被用作主要的依賴庫之一, 獲得了極高的知名度。
此次 PyArmadillo 庫的開發耗時 2 個月,在 Armadillo 主作者 Conrad Sanderson 的指導建議下,由 Data61 的實習生并在讀于昆士蘭科技大學(QUT)本科的 Jason Rumengan 和在讀于新南威爾士大學(UNSW)本科的 Terry Yue Zhuo 開發完成。其中,Terry 受 Conrad 邀請參與到 PyArmadillo 中與 Jason 共同開發兩大類型 mat 與 cube,也是唯一一位華人。Jason 主要負責 mat 部分以及編譯方面而 Terry 則負責 cube 部分以及文檔和測試。
項目地址:https://github.com/terryyz/PyArmadillo
具體而言,PyArmadillo 是一個 Python 語言的線性代數庫,強調易用性。該庫旨在提供類似于 Matlab 或者 Octave 的高級語法和功能,使得用戶以熟悉且自然的方式表達數學運算。
PyArmadillo 還提供了用于矩陣和多維數據集(cube)的對象,以及 200 多個用于處理對象中存儲數據的相關函數。所有功能都可以在一個平面結構中訪問,并且支持整數、浮點數和復數。通過集成 LAPACK 或者 Intel MKL、OpenBLAS 等高性能替代產品,該庫可以提供各種矩陣分解。
安裝指南
PyArmadillo 庫的具體用例如下圖所示:

- 安裝 PyArmadillo 需要滿足以下要求:
- 大于 Python3.6,推薦為 3.8 及以上;
- 支持至少 C++ 11 標準的 C++ 編譯器;
- 至少 8G RAM;
- 64-bit 的 CPU, 最好 4 核以上;
- 安裝之前已安裝好 OpenBLAS 和 LAPACK。
目前支持的操作系統:
- Linux;
- MacOS;
- Window x64 (x86 暫不支持)。
當前 PyArmadillo 僅為 MVP(minimum viable product),更多的功能還在開發當中。如果使用途中遇到問題,可以通過官網作者的聯系方式與他們交流或者在 GitLab 的倉庫內匯報。
作者簡介
Jason Rumengan,昆士蘭科技大學信息技術本科生。研究興趣在于軟件開發、信息安全、網絡連接、數據分析等。
Jason Rumengan 個人主頁:https://www.jasonrumengan.my.id
Conrad Sanderson 為 Armadillo 的主要作者,曾受 Yoshua Bengio 弟弟 Samy Bengio 指導進入博士后(PostDoc)研究。在 Samy Bengio 為數不多的學生之中,Conrad 是唯一一個他指導過的 PostDoc。后來,Conrad 來到早期為 NICTA 而現今為 CSIRO 一部分的 Data61 擔任研究科學進行研究,并且從計算機視覺研究過渡到開源科學計算庫的開發工作。在 Armadillo 大獲成功之后,Conrad 開始與 Debian 和 R 的主要開發人之一以及 Rcpp 的主作者 Dirk Eddelbuettel 合作進行 RcppArmadillo 的開發。主要研究興趣在于機器學習、AI、模式識別、計算機視覺、高性能數值計算等。
Conrad Sanderson 個人主頁:https://conradsanderson.id.au
華人作者 Terry Yue Zhuo 現為新南威爾士大學(UNSW)計算機科學本科生,主要研究興趣在于自然語言處理(NLP)、AI 和圖像處理等。
Terry Yue Zhuo 個人主頁:https://terryyz.github.io