高性能Java科學與技術運算庫Colt

jopen 9年前發布 | 27K 次閱讀 Colt Java開發

高性能Java科學與技術運算庫Colt

在學習《Machine Learning in Action》和《NLTK Natural Language Processing with Python》的過程中,我真切地感受到Numpy庫的便捷與強大,線性代數的數據結構與運算封裝得淺顯易懂。不過Numpy或者Python有兩個很致 命的缺點:①弱類型導致我無法看到深層對象中的注釋。②運行效率無法滿足生產需要。我在想Java平臺上是否有比較成熟的數學庫,類似于Numpy這樣簡 潔強大,同時又文檔完整。沒想到還真的有,在StackOverflow上有人問“Java equivalent for the Numpy multi-dimensional object”,得票最高的答案就是Colt。

Colt簡介

Colt是一個高性能的數學庫,由以下幾個子庫構成:

Colt庫:基本的動態數組、稀疏矩陣、線性代數。

Jet庫:數理統計、直方圖。

CoreJava庫:類printf的打印函數,并行計算。

文檔

詳細的文檔在http://acs.lbl.gov/software/colt/api/overview-summary.html

實例

挑我急著用的矩陣來說:

    package com.hankcs;

import cern.colt.matrix.DoubleMatrix2D;
import cern.colt.matrix.impl.DenseDoubleMatrix2D;
import cern.colt.matrix.linalg.Algebra;

public class Main
{

    public static void main(String[] args)
    {
        DoubleMatrix2D matrix;
        matrix = new DenseDoubleMatrix2D(3,4);
        //matrix = new SparseDoubleMatrix2D(3,4); // 稀疏矩陣
        //matrix = new RCDoubleMatrix2D(3,4); // 稀疏行壓縮矩陣
        System.out.println("初始矩陣");
        System.out.println(matrix);
        System.out.println("填充");
        matrix.assign(new double[][]{{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}});
        System.out.println(matrix);
        System.out.println("轉置");
        DoubleMatrix2D transpose = Algebra.DEFAULT.transpose(matrix);
        System.out.println(transpose);
        System.out.println("矩陣乘法");
        System.out.println(Algebra.DEFAULT.mult(matrix, transpose));
    }
}</pre><br />

輸出:

    初始矩陣
    3 x 4 matrix
    0 0 0 0
    0 0 0 0
    0 0 0 0
    填充
    3 x 4 matrix
    1  2  3  4
    5  6  7  8
    9 10 11 12
    轉置
    4 x 3 matrix
    1 5  9
    2 6 10
    3 7 11
    4 8 12
    矩陣乘法
    3 x 3 matrix
     30  70 110
     70 174 278
    110 278 446

由于Java不能重載運算符,所有的運算符都是通過一個類Algebra實現的。更多運算請參考 http://acs.lbl.gov/software/colt/api/cern/colt/matrix/linalg/Algebra.html

來自: 碼農場 ? 高性能Java科學與技術運算庫Colt

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!