Java中二维整数数组与二维双数组的转换
我试图创建一个实用函数,以从二维整数数组中创建一个二维双精度数组(该数组是由deeplearning4j的KerasTokenizer的textsToSequences(String[]text)方法创建的)。我创建了下面的方法,但在第111行(doubles[i][j] = list.get(j);
)继续获取NullPointerExceptions
。如何更改方法或创建新方法来解决此问题
public static double[][] integerToDoubleArray(Integer[][] integers) {
double[][] doubles = new double[integers.length][];
for (int i = 0; i < integers.length; i++) {
List<Integer> list = Arrays.asList(integers[i]);
for (int j = 0; j < list.size(); j++) {
doubles[i][j] = list.get(j);
}
}
return doubles;
}
我通过以下API使用以下方法调用它:https://deeplearning4j.org/api/latest/org/deeplearning4j/nn/modelimport/keras/preprocessing/text/KerasTokenizer.html#textsToSequences-java.lang.String:A-
private static double[][] encodeSequences(KerasTokenizer tokenizer, int length, ArrayList<String> sentences) {
return integerToDoubleArray(tokenizer.textsToSequences(arraylistToArray(sentences)));
}
# 1 楼答案
这可以解决你的问题。我看不出有任何理由在转换期间使用ArrayList
# 2 楼答案
您没有指定
doubles
的第二维度(它是一个双数组数组),也没有初始化它的每个元素,因此您得到了这个异常。只需将每一行初始化为一个新的双数组,其长度为该索引处整数数组的长度应该注意的是,您不需要将二维整数数组的每一行转换为
List
,因为您可以简单地使用integers[i][j]
访问行i
和列j
处的元素Demo