将双精度数组从Python移到Java

时间:2018-09-20 09:29:15

标签: java python arrays

我有一个Python脚本,可以计算一些很小的NumPy数组,并且我在需要使用这些数组的单独计算机上拥有Java服务。

有时需要重新计算这些数组,然后再由Java服务使用。将NumPy数组转储到磁盘并将其作为Java float[][]加载的最佳方法是什么?

我知道我可以使用JSON来做到这一点(Python脚本将NumPy数组转储到JSON文件中,Java服务从中恢复float[][]),但是还有其他“首选”方式吗?

2 个答案:

答案 0 :(得分:1)

将文件保存到磁盘上以在不同应用程序之间交换数据听起来对我来说是一种拙劣的做法。

根据您的结构和复杂性,我会考虑与相应的客户端实现消息传递队列(即redis)或文档数据库(即mongo或首选替代项),以在应用之间进行数据交换。

在数据结构本身上,我将为任务选择json或csv。如果您需要人类可读性或严格的结构,json是您的工具。如果数据仅用于机器读取,则csv将占用较少的空间来存储相同数量的数据。

答案 1 :(得分:1)

您可以使用JavaPython支持的forceDownload(event){ const data = event.target.getAttribute('value'); const url = window.URL.createObjectURL(new Blob([data])); const link = document.createElement('a'); link.href = url; link.setAttribute('download', 'quote.pdf'); document.body.appendChild(link); link.click(); } ,但这仍然是一个技巧。是否有一些通用接口(例如DLL等)可用于交换指向RAM中数据缓冲区的指针?

如果这不可能,我会坚持使用老式的ASCII CSV文件而不是使用JSON。