zoukankan      html  css  js  c++  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));

      }

      }

      复制代码

      输出:

      初始矩阵

      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 ... linalg/Algebra.html

  • 相关阅读:
    转:Web Service介绍
    CodeIgniter网页缓存
    CodeIgniter管理你的应用程序
    CodeIgniter自动装载资源
    python feedparser 使用
    HTC文件的使用
    动态执行javascript代码
    jQuery获取文本节点之text()/val()/html() 方法区别
    style,runtimeStyle与currentStyle的定义及用法
    File,FileStream,byte[]3者互相转换总结(转)
  • 原文地址:https://www.cnblogs.com/anjijiji/p/6370521.html
Copyright © 2011-2022 走看看