В первую очередь причина, по которой ваш код не работает, заключается в том, что такого метода mapToFloat
в Java API нет, но, что наиболее важно, нет FloatStream
.
ваши варианты вполне ограничено, если вы хотите выполнить sh это через потоки:
- накапливается в
Float[][]
вместо float[][]
, что может быть не идеально, поскольку оно включает узкое место упаковки и распаковки, когда вы хотите для выполнения некоторых вычислений позже в вашем приложении.
это можно сделать с помощью:
Float[][] trainingData = lists.stream()
.map(l -> l.toArray(new Float[0]))
.toArray(Float[][]::new);
используйте в первую очередь
List<List<Double>>
, а не
List<List<Float>>
для представления ваших тренировочных данных, затем вы можете просто преобразовать его в
double[][]
, когда это необходимо:
это может быть выполняется с помощью:
double[][] trainingData = lists.stream()
.map(l -> l.stream().mapToDouble(Double::doubleValue).toArray())
.toArray(double[][]::new);
, но если вы не можете изменить исходный тип данных по каким-либо причинам, вы все равно можете скрыть его до double[][]
.
, это может быть выполнено с помощью:
double[][] trainingData = lists.stream()
.map(l -> l.stream().mapToDouble(Float::doubleValue).toArray())
.toArray(double[][]::new);
определите свой собственный
Collector
, который вы сможете найти на сайте после некоторого исследования.
В конечном итоге вам, вероятно, лучше использовать здесь императивный подход т.е. for
петель.