借助Apache通用数学库,我得到了原始的double数组。
RealMatrix pInverse = new LUDecomposition(p).getSolver().getInverse();
double[][] temp = pInverse.getData();
我需要将温度转换为Double[][]
Double[][] inverse = new Double[][]temp;
答案 0 :(得分:12)
如果您使用的是Java 8+,则可以使用:
Double[][] inverse = Arrays.stream(temp)
.map(d -> Arrays.stream(d).boxed().toArray(Double[]::new))
.toArray(Double[][]::new);
答案 1 :(得分:7)
由于您已经在使用 Apache Commons ,可能值得指出ArrayUtils.toObject
将原始双精度数组转换为对象。
使用它,您可以将Andreas first solution写为
Double[][] inverse = new Double[temp.length][];
for (int i = 0; i < temp.length; i++) {
inverse[i] = ArrayUtils.toObject(temp[i]);
}
Double[][] inverse = Arrays.stream(temp)
.map(ArrayUtils::toObject)
.toArray(Double[][]::new);
答案 2 :(得分:6)
这是一组简单的嵌套循环:
Double[][] inverse = new Double[temp.length][];
for (int i = 0; i < temp.length; i++) {
inverse[i] = new Double[temp[i].length];
for (int j = 0; j < temp[i].length; j++)
inverse[i][j] = temp[i][j];
}
如果您知道所有子数组的大小都一样,它会更短:
Double[][] inverse = new Double[temp.length][temp[0].length];
for (int i = 0; i < temp.length; i++)
for (int j = 0; j < temp[0].length; j++)
inverse[i][j] = temp[i][j];