前言

Java中矩阵计算库常用的有:ujmp, ejml。
在使用中发现ujmp相对好用些,本文对此进行介绍。

UJMP

全称 Universal Java Matrix Package
官网 https://ujmp.org/


导入maven依赖

必须导入的有

<dependency><groupId>org.ujmp</groupId><artifactId>ujmp-core</artifactId><version>0.3.0</version>
</dependency>

ujmp提供gui,方便可视化。需导入

<dependency><groupId>org.ujmp</groupId><artifactId>ujmp-gui</artifactId><version>0.3.0</version>
</dependency>

UJMP常用方法

创建矩阵

矩阵元素为 数值类型。

Matrix.Factory.rand(rows, cols);  // 创建rows行 cols列的Matrix,元素数值范围[0,1]
Matrix.Factory.randn(rows, cols); // 创建Matirx,元素值服从标准正态分布N(0,1)
Matrix.Factory.zeros(rows, cols); // 创建Matrix,元素值都是0DoubleMatrix.Factory.zeros(rows, cols); // 指定具体的类型为DoubleMatrix类型,则元素为double型

矩阵元素为 字符串类型

StringMatrix.Factory.zeros(rows, cols);

矩阵内单个元素的get/set

Matrix mat = Matrix.Factory.zeros(5, 4);
mat.setAsDouble(5.0, 0, 0); // 0-based index
mat.getAsDouble(0, 0); // 获取到坐标(0,0)的值
mat.getAsInt(0, 0); // 获取到值,并且转成int格式

同理:

StringMatrix2D stringMatrix2D = StringMatrix.Factory.zeros(2,2);
stringMatrix2D.setAsString("a", 0, 0);
stringMatrix2D.setAsString("b", 0, 1);
stringMatrix2D.setAsString("11", 1, 0);
stringMatrix2D.setAsString("22", 1, 1);System.out.println(stringMatrix2D);

获取矩阵行或列数值,求均值,标准差,元素替换

IrisMatrix matrix = DenseMatrix.Factory.irisMatrix(); // 获取ujmp自带的iris数据,方便演示Matrix col0 = matrix.selectColumns(Calculation.Ret.NEW, 0); // 获取matrix的某一列。第1个参数意思是输出的是一个新的矩阵,第2个参指定第几列 这里是第0列
Matrix row1 = matrix.selectRows(Calculation.Ret.NEW, 1); // 获取matrix的某一行。这里是获取第1行。
Matrix select = matrix.select(Calculation.Ret.NEW, new long[]{0,1}, new long[]{1,2}); // 获取指定范围的数据,比如 行下标0-1, 列下标1-2Matrix mean = matrix.mean(Calculation.Ret.NEW, 0, true);  // 矩阵求均值。第2个参数dimension 0是对列, 1对行,第3个参数为 是否ignoreNaN
Matrix std = matrix.std(Calculation.Ret.NEW, 0, true, true); // 标准差。第2个参数是dimension, 第3个参数是ignoreNaN, 第4个参数为是否考虑贝塞尔校正(当对采样数据进行求std时,往往需要校正)Matrix matrix1 = matrix.replace(Calculation.Ret.NEW, "Iris-setosa", "0");  // replace操作。把矩阵中元素值为"Iris-setosa"替代为"0"

获取矩阵行数,列数,转置,加减乘求逆,行列式,特征值特征向量

Matrix mat = Matrix.Factory.zeros(5, 5);
mat.getRowCount(); // mat的行数
mat.getColumnCount(); // mat的列数Matrix transpose = mat.transpose(); // 矩阵转置Matrix plus = mat.plus(transpose); // 矩阵加法
Matrix minus = mat.minus(transpose); // 矩阵减法
Matrix mtimes = mat.mtimes(transpose); // 矩阵乘法
Matrix times = mat.times(2); // 矩阵elementwise乘法
mat.inv(); // 矩阵求逆mat.det(); // 矩阵的determinantMatrix[] eig = mat.eig(); // 输出的eig内有两个元素,分别是特征向量和特征值

GUI

当导入了ujmp-gui依赖后可用。

IrisMatrix matrix = DenseMatrix.Factory.irisMatrix();
matrix.showGUI(); // 将矩阵可视化

参考

https://ujmp.org/

Java矩阵计算库UJMP相关推荐

  1. java pem 私钥_将PEM导入Java密钥库

    在我的情况下,我有一个pem文件,其中包含两个证书和一个用于相互SSL身份验证的加密私钥.所以我的pem文件看起来像这样: -----BEGIN CERTIFICATE----- ... -----E ...

  2. 2017国二java题库,2017全国计算机二级考试JAVA考试题库

    Java是一个纯的面向对象的程序设计语言,它继承了 C++ 语言面向对象技术的核心.下面是小编收集的计算机二级考试JAVA考试题库,希望大家认真阅读! 1. 某二叉树结点的前序序列为E.A.C.B.D ...

  3. Java机器学习库ML之十一线性SVM

    线性SVM的原理就不多说了,最强大的就是libsvm库(ml库也是用这个),参考:http://blog.csdn.net/fjssharpsword/article/details/53883340 ...

  4. Java机器学习库ML之六关于模型迭代训练的思考

    我遇到的场景是:样本集有5000万条,接近5个G,那么这样的样本集一次导入训练,我放着一天一夜都没跑出结果,机器性能还特别好,是64位linux有128G内存. 针对这样的情况,我想到的是两种思路: ...

  5. Java机器学习库ML之一Dataset和Instance

    Java机器学习库ML官网:http://java-ml.sourceforge.net/ 对于一个机器学习库来说,最基础就是数据处理能力,ml库给了dataset和instance两个类,datas ...

  6. GitHub上那些值得一试的JAVA开源库--转

    原文地址:http://www.jianshu.com/p/ad40e6dd3789 作为一名程序员,你几乎每天都会使用到GitHub上的那些著名Java第三方库,比如Apache Commons,S ...

  7. 编程方法学26:介绍Java标准库

    前言 本笔记是斯坦福公开课,编程方法学的学习笔记. 总体而言,这门课讲了很多很基础的东西,具有很强的通用性. 正文 本次的笔记对应的是第二十六节课,这堂课是来讲Java标准库的知识. 1ACM lib ...

  8. 连连看java代码_连连看 - java代码库 - 云代码

    [java]代码库/* * To change this license header, choose License Headers in Project Properties. * To chan ...

  9. ajax代码 java,AJAX - java代码库 - 云代码

    [java]代码库1.什么是AJAX AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). 2.ajax的特点:局部刷新 3.Aj ...

最新文章

  1. pyhon学习问题汇总
  2. C++ VS2010 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项
  3. html5毕业作品开场白,毕业典礼主持人开场白
  4. C++ WINDOWS API 第2章 Windows API概要
  5. vs2008安装部署软件过程
  6. java 操作窗口_java selenium (十二) 操作弹出窗口
  7. OKHttp原理讲解之基本概念
  8. 【JavaP6大纲】MySQL篇:为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数据库如何进行垂直拆分
  9. Redis最大内存配置
  10. 百练:4151 电影节
  11. 如何在eclipse中创建jsp工程项目
  12. 【用es6写个机选彩票】
  13. 计算机替换字体怎么操作,电脑替换文字怎么操作
  14. RSA no_padding加密(modulus、exponent构造公钥)
  15. Android 折叠屏适配最全的攻略在这里
  16. OWASP Top 10 安全漏洞详解
  17. 硬件加密算法HITAG2流程分析
  18. 没毕业就3次跳槽的经历,走不平凡的路,让人跌破眼镜。
  19. java中子类会继承父类的构造方法吗
  20. 电脑本地,WiFi都能连上,但就是上不去网

热门文章

  1. 【算法】_009_插入排序_二分查找优化
  2. Unity中如何给你的场景模型mesh减面——【一】
  3. 回来了,我的motherland
  4. 基于ik分词器和布隆过滤器实现敏感词过滤
  5. 伤口清创术行业调研报告 - 市场现状分析与发展前景预测
  6. Ubuntu频繁卡死解决
  7. 稳定版全网淘宝商品接口,淘宝主图接口取分类,主图,标题,价格,旺旺等
  8. 送几本入门信息安全的书
  9. 【微信小程序】微信小程序的接口调入 获取太阳码 根据返回值的类型进行接收,微信接口可能直接返回图片,也可能返回一个错误信息的json,同时兼容处理这两种情况
  10. 聊聊汽车ECU中单片机开发