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

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