数据交换格式ocaml到python numpy或pandas



我在ocaml中生成时间序列数据,这些数据基本上是浮动的长列表,从几个kB到几百MB。我想使用python numpy和pandas库来阅读、分析和绘制它们。现在,我正在考虑将它们写入csv文件。

二进制格式可能更有效?我会在心跳中使用HDF5,但Ocaml没有绑定。有没有一个好的二进制交换格式,可以很容易地从双方使用?写文件是最好的选择,还是有更好的数据交换协议?甚至可能是可以在线更新的东西?

首先,我想提到的是,实际上有针对OCaml的HDF-5的绑定。但是,当我面临同样的问题时,我没有找到一个适合我的目的并且足够成熟的问题。所以我不建议你使用它,但谁知道呢,也许今天有更多的下降。

因此,根据我的经验,在OCaml中存储数字数据的最佳方式是Bigarrays。它们实际上是C指针的包装器,可以在OCaml运行时之外进行分配。它们也可以是内存映射区域。因此,对我来说,这是在不同进程(可能用不同语言编写)之间共享数据的最有效方式。您可以使用内存映射与OCaml、Python、Matlab或其他任何软件共享数据,而无需付出任何代价,尤其是如果您不想同时从不同的进程修改数据。

其他方法是使用MPI、ZMQ或裸套接字。我更喜欢后者,唯一的原因是前者不支持大数组。此外,我建议您寻找capn'proto,它也非常高效,并且具有OCaml和Python的绑定,对于您的特定用例,可以非常好地工作。

最新更新