4

我想使用 Clojure 的 Incanter,但我想混合调用 Python 广泛的 Numpy/Scipy 数值库。Incanter 和 Numpy 之间是否存在互操作性桥梁,允许从 Clojure 运行 CPython 的嵌入式运行时,并且可以相互转换 Numpy 和 Incanter 的矩阵数据结构?

Jython 还不够,因为 Numpy 需要 CPython。

我知道(但从未使用过)http://jepp.sourceforge.net/,它允许 Java 程序控制嵌入式 CPython 运行时——但仍然需要 Numpy/Incanter 矩阵相互转换。

我正在寻找类似于https://github.com/jolby/rincanter的东西(我还没有使用过),但是对于 CPython/Numpy 而不是 R。

4

1 回答 1

1

没有现成的 numpy-incanter 桥。你必须自己写。

一种方法是使用 JNI resp。Jepp 和 - 正如你已经说过的 - 将原始 ndarray 字节转换为 Java Colt 库可以使用的东西(反之亦然; incanter 建立在 Colt 之上)。此外,您已经包装了您感兴趣的所有功能。

另一种方法是序列化 ndarray 并在 CPython 和 Jython 之间发送它们(例如,使用 Pyro,可与 CPython 和 Jython 一起使用:http ://packages.python.org/Pyro4/alternative.html#jython )。同样,您必须将原始字节转换为 Incanter 相应的内容。numpy 可以理解,但是您可以在 Java 端使用 Python 代码,而无需使用 JNI 将每个函数包装在 numpy/scipy 中。

于 2012-02-09T16:53:09.377 回答