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

高性能Java科学与技术运算库Colt的更多相关文章

  1. 高性能页面加载技术--BigPipe设计原理及Java简单实现

    1.技术背景 动态web网站的历史可以追溯到万维网初期,相比于静态网站,动态网站提供了强大的可交互功能.经过几十年的发展,动态网站在互动性和页面显示效果上有了很大的提升,但是对于网站动态网站的整体页面 ...

  2. Java基础-Java中的并法库之线程池技术

    Java基础-Java中的并法库之线程池技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是线程池技术 二.

  3. java的JSP技术

    java的JSP技术 [toc] 1.JSP简介 Jsp技术是用来开发java web的页面显示的,所有MVC模型里面的视图层,所以视图层的开发 jsp不是编程语言,三个英文是java server ...

  4. 微信团队分享:iOS版微信的高性能通用key-value组件技术实践

    本文来自微信开发团队guoling的技术分享. 1.前言 本文要分享的是iOS版微信内部正在推广和使用的一个高性能通用key-value 组件的技术实践过程,该组件在微信内部被命名为MMKV(以下简称 ...

  5. 云原生时代高性能Java框架—Quarkus(一)

    --- Quarkus&GraalVM介绍.创建并启动第一个项目 Quarkus系列博文 Quarkus&GraalVM介绍.创建并启动第一个项目 构建Quarkus本地镜像.容器化部 ...

  6. Java二进制和位运算,这一万字准能喂饱你

    基础不牢,地动山摇.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BAT的乌托 ...

  7. Java Web编程技术学习要点及方向

    学习编程技术要点及方向亮点: 传统学习编程技术落后,应跟著潮流,要对业务聚焦处理.要Jar, 不要War:以小为主,以简为宝,集堆而成.去繁取简 Spring Boot,明日之春(future of ...

  8. 《精通Hibernate:Java对象持久化技术详解》目录

    图书信息:孙卫琴 电子工业出版社 第1章 Java应用分层架构及软件模型: 1.1 应用程序的分层体系结构 1.1.1 区分物理层和逻辑层 1.1.2 软件层的特征 1.1.3 软件分层的优点 1.1 ...

  9. java集群技术(转)

    来源:http://blog.csdn.net/cdh1213/article/details/21443239 序言 越来越多的关键应用运行在J2EE(Java2, Enterprise Editi ...

随机推荐

  1. 程序间获取ALV显示数据(读取ALV GRID上的数据)

    程序间获取ALV数据的两种方法: 方法1:通过修改SUBMIT的目标程序,把内表EXPORT到内存,SUBMIT后IMPORT ,该方法需要修改目标程序,可以任意设置目标程序的中断点: * Execu ...

  2. nginx虚拟主机添加

    1. 进入 /usr/local/nginx/conf/vhost 目录, 创建虚拟主机配置文件 wbs.test.com.conf ({域名}.conf). 2.打开配置文件, 添加服务如下: lo ...

  3. LODOP中用ADD_PRINT_IMAGE缩放非图片超文本

    LODOP中HTML,URL,带有img标签的IMAGE,TBALE等打印项都属于超文本.关于LODOP中的纯文本和超文本,可查看本博客相关博文:LODOP中的纯文本和超文本打印项 ADD_PRINT ...

  4. iOS-在AFN基础上进行网络请求的封装

    网络请求的思路:如果请求成功的话AFN的responseObject就是解析好的. 1发送网络请求:get/post/或者别的 带上URL,需要传的参数 2判断后台网络状态码有没有请求成功: 3 请求 ...

  5. Hadoop 部署之 HBase (四)

    目录 一.HBase是什么 HBase 和 HDFS HBase的存储机制 二.HBase 集群部署 1.下载安装 2.配置 HBase 环境变量 三.HBase 配置(namenode01) 1.配 ...

  6. Unity3d NavMeshAgent 寻路问题(1)

    navMeshAgent调用setDestination 后,会有一个计算路径的时间,计算过程中pathPending为true. 在这个过程中remainingDistance一直为0.

  7. webdriervAPI(警告框处理)

    from  selenium  import  webdriver driver  =  webdriver.Chorme() driver.get("http://www.baidu.co ...

  8. C4model实践总结

    能看到这篇文章的人,我就不用废话给你介绍C4model.vscode.plantuml这些是什么以及怎么安装了. 0. 基本语法. 1. 创建常用模板.并保存到snippet. 2.利用关系REL控制 ...

  9. java、python、golang等开发语言如何快速生成二维码?

    免费二维码生成途径非常多!比如比较有名的草料二维码,如果只是简单的使用,用它就足够了.但是如果想大规模的生成,那就不太合适了.再者很多工具都没办法在二维码中加入logo(像微信二维码一样). 接下来, ...

  10. 360再报丑闻,派遣黑客盗取ESET安全软件病毒库,法院已经介入调查

    360再报丑闻,派遣黑客盗取ESET安全软件病毒库,联合法院已经介入调查.360于2019/3/10日通过非法途径试图盗取ESET安全软件100MB的病毒库,ESET立即反抗,360黑客电脑立即崩溃, ...