在学习《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

最新文章

  1. Win10 字体模糊解决(DPI缩放禁用),设置默认输入法英文
  2. Emacs使用projectile-rails 插件注意事项
  3. jMeter 监控cpu、内存
  4. 小白日记44:kali渗透测试之Web渗透-SqlMap自动注入(二)-sqlmap参数详解REQUEST
  5. POJ 3461 Oulipo(字符串匹配,KMP算法)
  6. php定时执行任务的几个方法
  7. Execl DataTime Format Number
  8. Flask源码阅读笔记(一)
  9. Mini-project # 4 - "Pong"___An Introduction to Interactive Programming in Python"RICE"
  10. AngularJS学习篇(二十)
  11. 洛谷 [p1439] 最长公共子序列 (NlogN)
  12. jq图片展示插件highslide.js简单dom
  13. thinkPHP HTML输出多条查询结果
  14. mixer中动态Alpha通道处理案例
  15. 12 Connections
  16. Xlight FTP搭建FTP服务器教程
  17. 详细讲解Linux下安装python3(Python3.5.4)
  18. solusvm安装过程
  19. Redis入门及主从配置
  20. Django的学习(三)————models

热门文章

  1. 【UE】常用的UltraEdit使用技巧
  2. 为什么要设置 Mysql 的 ft_min_word_len=1
  3. android studio 开发中启动android项目报错sdk版本不一致解决方案
  4. 安装flask_mysqldb出现报错问题解析
  5. OpenCV.CV_FOURCC
  6. ffmpeg学习笔记-音频播放
  7. shell备份脚本
  8. Eureka【支持Remote Region】
  9. cmake 简单build和删除
  10. Centos7下,宿主机nginx配合docker环境的php-fpm