迭代 DataSet Iterator 并添加到 DataSet 中

interate DataSetIterator and add intto DataSet

我想创建一个 DataSetIterator 并将其添加到 DataSet 中。迭代很容易:

while (iterator.hasNext()) {
    DataSet next = iterator.next();
    dataSet.addRow(next, dataSet.numExamples()); // isn't work
}

如果 DataSetIterator 批量大小为 1,当我这样做时 dataSet.addRow(next, 1); 这只是将第一个元素替换为下一个元素。如果批量大小为 2,则引发异常:Exception in thread "main" java.lang.IllegalArgumentException: NDArrayIndex is out of range. Beginning index: 2 must be less than its size: 2

我也想知道如何将一个数据集添加到另一个数据集中。

语句抛出的异常:

dataSet.addRow(next, dataSet.numExamples()); // isn't work

应该会告诉您为什么它不起作用。

上述引发异常的可能原因是 addRow() 的第二个参数指定的行索引基于 0,因此有效值范围从 0 到 numExamples() -1。

关于向DataSet中添加行,请检查DataSet中是否有append()方法或不需要调用者指定行索引的addRow()方法。要将一个 DataSet 实例与另一个实例合并,请检查是否有可用的 merge() 方法。

希望对您有所帮助!

DataSet class 有静态 merge() 方法。在这个方法中,你将 List<DataSet> 和 returns 所有 DataSet 包含到 List 中,就像一个 DataSet.

ArrayList<DataSet> data_list = new ArrayList<DataSet>();
// add some data into data_list
DataSet allData = DataSet.merge(data_list); // all DataSet into data_list are merged into allData