Apache Commons Math:如何对 rows/columns 求和?
Apache Commons Math: how to perform sum along rows/columns?
我是 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)
似乎没有简单的方法来实现这一点,如何生成一个 ones 矩阵 来执行 sum?,例如:
//get the row sums
mtx.multiply(MatrixUtils.createRealMatrix(new double[][]{{1}, {1}}))
> Array2DRowRealMatrix{{3.0},{7.0},{11.0}}
//get the column sums
MatrixUtils.createRealMatrix(new double[][]{{1, 1, 1}}).multiply(mtx)
> Array2DRowRealMatrix{{9.0,12.0}}
我是 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)
似乎没有简单的方法来实现这一点,如何生成一个 ones 矩阵 来执行 sum?,例如:
//get the row sums
mtx.multiply(MatrixUtils.createRealMatrix(new double[][]{{1}, {1}}))
> Array2DRowRealMatrix{{3.0},{7.0},{11.0}}
//get the column sums
MatrixUtils.createRealMatrix(new double[][]{{1, 1, 1}}).multiply(mtx)
> Array2DRowRealMatrix{{9.0,12.0}}