如何将二维数组赋值给一维数组



我使用apache common_math库来计算回归参数。如图2和3行所示,将2d数组分配给单个数组。当我使用相同的代码时,

我得到错误:

"类型不匹配错误:无法从双精度[][]转换为双精度[]

OLSMultipleLinearRegression regression = new OLSMultipleLinearRegression();
double[] y = new double[]{11.0, 12.0, 13.0, 14.0, 15.0, 16.0};
double[] x = new double[6][];
x[0] = new double[]{0, 0, 0, 0, 0};
x[1] = new double[]{2.0, 0, 0, 0, 0};
x[2] = new double[]{0, 3.0, 0, 0, 0};
x[3] = new double[]{0, 0, 4.0, 0, 0};
x[4] = new double[]{0, 0, 0, 5.0, 0};
x[5] = new double[]{0, 0, 0, 0, 6.0};          
regression.newSample(y, x);

为什么会这样?这是如何运作的呢?

OLS回归的更多细节在这里

Case 1:

   double[] y = new double[]{11.0, 12.0, 13.0, 14.0, 15.0, 16.0};

您正在创建一个带有值的1D数组,并立即插入它。工作正常

Case 2:

double[] x = new double[6][];

你正在声明一个1D数组,并试图分配一个2D数组。这是非法的

将声明更改为2D或初始化为1D

有效的声明将是

double[] x = new double[6];  // 1D

double[][] x = new double[6][lenghtYouWant]; //2D

在看到插入之后,你想要一个2D数组。要成功编译下面的代码,需要将声明更改为

double[][] x = new double[6][];