我有一个具有223行11列的矩阵,我想将此矩阵拆分为数据包(每个数据包将有10行来自矩阵),所以最后我应该有22个数据包(我将解散最后3行)。收到数据包后,我想对我的数据包执行交叉验证算法,并且我正在考虑将所有数据包放入HaskMap中,该allPacks将以一个数据包为键,并对其余数据包进行估价。所以看起来像这样

key = pack1, value = pack2,...,pack22
key = pack2, values = pack1, pack3,...pack22
.............................................
key = pack22, values = pack1,...,pack21


在创建地图之前,我在将矩阵拆分为数据包时遇到问题
这是我的代码:

        int k = 0;
        ArrayList<ArrayList<double[]>> allPacks = new ArrayList<ArrayList<double[]>>();
        ArrayList<double[]> batch = new ArrayList<double[]>();
        for (int i=0;i<matrix.length;i+=10) {
            System.out.println(i);
            batch.add(matrix[i]);
            k++;
            if (k % 10 == 0) {
                allPacks.add(batch);
                batch.clear();
            }
        }


如果我打印的大小是2,我听不懂。有帮助吗?

最佳答案

您的主要问题是每次都添加相同的batch

这应该解决它:

    ArrayList<ArrayList<double[]>> allPacks = new ArrayList<ArrayList<double[]>>();
    for (int i = 0; i < matrix.length - 10; i += 10) {
        System.out.println(i);
        ArrayList<double[]> batch = new ArrayList<double[]>();
        for (int j = 0; j < 10; j++) {
            batch.add(matrix[i + j]);
        }
        allPacks.add(batch);
    }

10-05 18:19