在开放式问题之后:Java equivalent for the NumPy multi-dimensional object,我最终在Java中实现了自己的数值方法。但最终的输出似乎太大了(几乎是NumPy的两倍)。Python没有int、long、float或double等数值类型,但我相信NumPy会将所有内容转换为字节。由于我用Java实现了我的程序,我不得不使用那些标准的数字类型(double [][][],long [][]等...),当我通过FileWriter将结果保存到文件中时,输出的大小几乎是NumPy函数的两倍:
FileWriter fstream = new FileWriter(outName, true);
BufferedWriter out = new BufferedWriter(fstream);
for (int i = 0; i < nFramesBack; i += 2) {
double[][] data1 = imageObjArray[i];
for (int j = 0; j < 128; j++) {
for (int k = 0; k < 128; k++) {
imageObjArray[i][j][k] = data1[j][k] * flatfB[j][k];
out.write(data1[j][k] * flatfB[j][k] + " ");
}
out.newLine();
}
out.newLine();
}
out.flush();
out.close();
我正在寻找一个解决方案,将我的输出转换为像NumPy这样的字节格式。
1条答案
按热度按时间ykejflvf1#
在Java中,可以使用DataOutputStream类以二进制格式编写数值数据,这有助于减小输出文件的大小。下面是一个如何修改代码以将数据写入字节的示例:
在此代码中,我们使用DataOutputStream,而不是使用FileWriter和BufferedWriter,通过writeDouble()方法将double值写入二进制数据。与将值写入文本相比,这将以更紧凑的形式写入值。
通过使用二进制格式,可以显著减小输出文件的大小,尤其是在处理大型数值数组时。