如何创建一个包含一列的二维双数组

How to create a 2D double array with column of ones

我需要使用 apache 的 RealMatrix 计算 java 中的列总和。这将像这样工作:

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 matrix = MatrixUtils.createRealMatrix(values);

MatrixUtils.createRealMatrix(new double[][]{{1, 1, 1}}).multiply(matrix)
>> Array2DRowRealMatrix{{9.0,12.0}}

但是,我想在

中声明 ones 时使其通用化
MatrixUtils.createRealMatrix(new double[][]{{1, 1, 1}})

有没有办法在大括号内预先声明我想要的数量?

说我想要numberOfOnes = 10,那么:

MatrixUtils.createRealMatrix(new double[][]{{1, 1, 1, 1, 1, 1, 1, 1, 1, 1}})

我正在努力寻找一种方法来制作这个将军。有帮助吗?

您可以使用 Arrays.fill:

double[][] m = new double[rows][cols];
for (int i = 0; i < rows; i++)
    Arrays.fill(m[i], 1.0);

您可以使用Arrays.setAll方法分别处理每一行:

double[][] m = new double[rows][];
Arrays.setAll(m, i -> {
    double[] row = new double[cols];
    Arrays.fill(row, 1.0);
    return row;
});