我有一个具有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);
}