猿问

Apache Commons Math:如何沿行/列执行求和?

我对 Apache Common Math 很陌生,所以请原谅这些琐碎的问题。


根据API doc,我无法弄清楚如何执行按列或按行求和。


import org.apache.commons.math3.linear.RealMatrix;

import org.apache.commons.math3.linear.MatrixUtils;


double[][] values = {{1.0, 2.0}, {3.0, 4.0}, {5.0, 6.0}};

RealMatrix mtx = MatrixUtils.createRealMatrix(values);

上面的代码生成如下矩阵:


[[1, 2],

 [3, 4],

 [5, 6]]

执行列式求和的正确语法是什么?这会给我:


[9, 12]

我如何执行按行求和?这会给我:


[3,

 7,

 11

]

为了进行比较,以下是 Scala 的 Breeze 库中的语法:


import breeze.linalg._

val mtx = DenseMatrix((1.0, 2.0), (3.0, 4.0), (5.0, 6.0))


// sum along the column direction

sum(mtx(::, *))

// Transpose(DenseVector(9.0, 12.0))



// sum along the row direction

sum(mtx(*, ::))

// DenseVector(3.0, 7.0, 11.0)


Smart猫小萌
浏览 190回答 1
1回答

翻翻过去那场雪

似乎没有简单的方法可以实现,如何生成一个矩阵来求和?,例如://get the row sumsmtx.multiply(MatrixUtils.createRealMatrix(new double[][]{{1}, {1}}))> Array2DRowRealMatrix{{3.0},{7.0},{11.0}}//get the column sumsMatrixUtils.createRealMatrix(new double[][]{{1, 1, 1}}).multiply(mtx)> Array2DRowRealMatrix{{9.0,12.0}}
随时随地看视频慕课网APP

相关分类

Java
我要回答