2011-12-14 25 views
4

我想使用Clojure的Incanter,但我想將調用混合到Python廣泛的Numpy/Scipy數值庫中。 Incanter和Numpy之間是否存在一個互操作性橋樑,允許從Clojure運行CPython的嵌入式運行時,並將Numpy和Incanter的矩陣數據結構相互轉換?Incanter-numpy interop

因爲Numpy需要CPython,Jython是不夠的。

我知道(但從未使用過)http://jepp.sourceforge.net/,它允許Java程序控制嵌入式CPython運行時 - 但仍需要Numpy/Incanter矩陣相互轉換。

我在尋找類似的東西https://github.com/jolby/rincanter(我也尚未使用),但CPython的/ numpy的,而不是R.

回答

1

沒有現成的numpy的,咒術橋。你必須自己寫。

一種方法是使用JNI和。 Jepp和 - 正如你已經說過的 - 將原始的ndarray字節轉換成Java Colt庫可以使用的東西(反之亦然;煽動者建立在Colt上)。此外,您有包裹你有興趣

另一種方法是序列化ndarrays並圍繞他們發送的CPython和Jython的(例如用煙火,與CPython的和Jython的工作原理:http://packages.python.org/Pyro4/alternative.html#jython)之間的所有功能。再次,您將不得不將原始字節轉換爲Incanter或Incanter。 numpy可以理解,但是你可以在Java端使用Python代碼,而不需要用JNI在numpy/scipy中包裝每一個函數。