你在后端每天跟Java打交道,服務跑得穩如老狗,但一碰到數據處理、矩陣運算就頭疼。隔壁Python同事用NumPy幾行代碼搞定的活兒,你這邊要么調庫調用得七拐八繞,要么被迫把核心計算切出去給Python服務。
一個叫NumPy4J的開源項目最近發布了,想解決的就是這個擰巴的現狀。它照著NumPy的API設計思路,給Java開發了一套依賴清零的數值計算庫。
具體能干什么?第一,多維數組——在Java里直接操作NDArray,不再用嵌套循環折磨自己。第二,廣播機制,按NumPy的廣播規則自動對齊維度,不同形狀的數組也能做運算。第三,創建、切片、變形這些NumPy里的家常操作,都搬了過來。第四,線性代數,包括矩陣乘法和解線性方程組。
代碼長這樣:你想造一個2×2的數組A,再生成一個全1的數組B,然后A加B,三行搞定。矩陣乘法只調一個matmul方法,求解Ax=b也只要一個LinearAlgebra.solve。
有人可能會問,Java不是已經有挺多數學庫了?這個項目的作者說,NumPy4J的差異點在于:提供跟NumPy極其相似的API體驗,把多維數組作為一等公民來對待,保持API干凈,然后為以后更多的科學計算能力打地基。
它拿了三個明確要求來約束自己:零外部依賴、API設計追求簡潔、測試直接拿Python NumPy當標桿來對比驗證。測試用例覆蓋了廣播、矩陣運算、變形、轉置、線性求解和逐元素計算,結果要跟NumPy對上才算過。
接下來項目還排了清單:補上更多跟NumPy對標的能力,比如QR分解、LU分解、Cholesky分解,還有特征值計算,前端統計函數,以及性能相關的改進。
作者已經把源碼、文檔、Wiki全都放到了GitHub上,包也發布到了Maven中央倉庫,地址寫在項目主頁里。如果你是那種整天在Java服務寫業務代碼,偶爾還要被數據處理和科學計算折磨的程序員,可以直接拉下來試試。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.