文档章节

高性能Java科学与技术运算库Colt

不最醉不龟归
 不最醉不龟归
发布于 2017/06/09 17:55
字数 469
阅读 20
收藏 0
点赞 0
评论 0

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

实例

挑我急着用的矩阵来说:

 
  1. package com.hankcs;
  2.  
  3. import cern.colt.matrix.DoubleMatrix2D;
  4. import cern.colt.matrix.impl.DenseDoubleMatrix2D;
  5. import cern.colt.matrix.linalg.Algebra;
  6.  
  7. public class Main
  8. {
  9.  
  10.     public static void main(String[] args)
  11.     {
  12.         DoubleMatrix2D matrix;
  13.         matrix = new DenseDoubleMatrix2D(3,4);
  14.         //matrix = new SparseDoubleMatrix2D(3,4); // 稀疏矩阵
  15.         //matrix = new RCDoubleMatrix2D(3,4); // 稀疏行压缩矩阵
  16.         System.out.println("初始矩阵");
  17.         System.out.println(matrix);
  18.         System.out.println("填充");
  19.         matrix.assign(new double[][]{{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}});
  20.         System.out.println(matrix);
  21.         System.out.println("转置");
  22.         DoubleMatrix2D transpose = Algebra.DEFAULT.transpose(matrix);
  23.         System.out.println(transpose);
  24.         System.out.println("矩阵乘法");
  25.         System.out.println(Algebra.DEFAULT.mult(matrix, transpose));
  26.     }
  27. }

输出:

 
  1. 初始矩阵
  2. 3 x 4 matrix
  3. 0 0 0 0
  4. 0 0 0 0
  5. 0 0 0 0
  6. 填充
  7. 3 x 4 matrix
  8. 1  2  3  4
  9. 5  6  7  8
  10. 9 10 11 12
  11. 转置
  12. 4 x 3 matrix
  13. 1 5  9
  14. 2 6 10
  15. 3 7 11
  16. 4 8 12
  17. 矩阵乘法
  18. 3 x 3 matrix
  19.  30  70 110
  20.  70 174 278
  21. 110 278 446

由于Java不能重载运算符,所有的运算符都是通过一个类Algebra实现的。更多运算请参考http://acs.lbl.gov/software/colt/api/cern/colt/matrix/linalg/Algebra.html

本文转载自:http://www.hankcs.com/program/java/science-and-technology-of-high-performance-computing-java-library

共有 人打赏支持
不最醉不龟归
粉丝 12
博文 262
码字总数 435155
作品 0
深圳
程序员
抵制Nature机器智能期刊,维护学界开放:百名学者签署联合声明

开放的研究氛围一直是促进人工智能领域发展的关键因素,正是因为学界和业界参与者不断和快速地公开自己的研究结果和代码,人们才能够及时掌相关方向的最新进展,并在学术环境之外开展自己的研...

机器之心
04/29
0
0
2018年java编程语言经典基础知识总结学习

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰
05/21
0
0
国外程序员整理的Java资源大全

构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配...

强子哥哥
2015/11/16
0
1
推荐!国外程序员整理的Java资源大全

构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配...

huntering
2015/01/13
0
0
构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并

构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配...

enosh
2015/01/09
0
2
推荐!国外程序员整理的Java资源大全

Java 几乎是许多程序员们的入门语言,并且也是世界上非常流行的编程语言。国外程序员 Andreas Kull 在其 Github 上整理了非常优秀的 Java 开发资源,推荐给大家。 译文由 ImportNew- 唐尤华翻...

李朝强
2015/11/21
0
0
Java程序员必读书单,家族又添新成员

点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 有些革命出其不意地吸引了全世界的眼球。Twitter、Linux操作系统和...

异步社区
05/09
0
0
Java:大数据技术领域的一匹黑马

诞生于1991年的Java如今已经成为世界范围内应用最为广泛的编程语言之一。在今天的文章中,我们将共同了解Java所拥有的七大关键新特性,展望其如何在未来的超级计算、大数据以及物联网等领域继...

Java大数据处理
04/22
0
0
外国程序员整理的Java资料大全

构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配...

乔三爷
2015/03/30
0
1
JVM 即时编译器 - GraalVM

Graal — 新的 JVM 即时编译器 GraalVM 是新一代的高性能跨语言虚拟机,用于运行 JavaScript、Python 3、Ruby、R、基于 JVM 的语言,如 Java、Scala、Kotlin 和基于 LLVM 的语言,如 C 和 C+...

匿名
2014/09/29
0
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

gcviewer的使用

1、没有安装git软件 在编译打包GCViewer的过程中,不能执行git命令,错误信息如下: [ERROR] Failed to execute goal org.codehaus.mojo:buildnumber-maven-plugin:1.4:create (create-build...

刀锋
16分钟前
1
0
Android LogUtil 日志优化 调试的时候打印 点击跳转

打印日志的时候,可以点击跳转 LogUtil.java public class LogUtil { private static boolean IS_DEBUG = BuildConfig.DEBUG; public static void i(String tag, String message) {......

Jay_kyzg
26分钟前
0
0
人工智能你必须掌握的32个算法(二)归并排序算法

归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子...

木头释然
29分钟前
0
0
第十四章NFS服务搭建与配置

14.1 NFS介绍 NFS介绍 NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netap...

Linux学习笔记
52分钟前
1
0
流利阅读笔记27-20180716待学习

生了娃照样能打,两位母亲温网会师 Lala 2018-07-16 1.今日导读 现今在生儿育女后回归事业的母亲们已经非常多见,但是很少有人想到,以高强度运动与竞争激烈为特色的竞技体育项目也会有 work...

aibinxiao
53分钟前
6
0
Guava 源码分析(Cache 原理【二阶段】)

前言 在上文「Guava 源码分析(Cache 原理)」中分析了 Guava Cache 的相关原理。 文末提到了回收机制、移除时间通知等内容,许多朋友也挺感兴趣,这次就这两个内容再来分析分析。 在开始之前...

crossoverJie
今天
0
0
OSChina 周一乱弹 —— 如果是你喜欢的女同学找你借钱

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @guanglun :分享Michael Learns To Rock的单曲《Fairy Tale》 《Fairy Tale》- Michael Learns To Rock 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
今天
842
20
NNS域名系统之域名竞拍

0x00 前言 其实在官方文档中已经对域名竞拍的过程有详细的描述,感兴趣的可以移步http://doc.neons.name/zh_CN/latest/nns_protocol.html#id30 此处查阅。 我这里主要对轻钱包开发中会用到的...

暖冰
今天
0
0
32.filter表案例 nat表应用 (iptables)

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例: ~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我...

王鑫linux
今天
0
0
shell中的函数&shell中的数组&告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

影夜Linux
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部