Java 从numpy数组使用jcc创建nd JArray
我有一些java类(不是我写的),我正试图从python中访问它们。我已经用JCC成功地编译了它们,并且可以毫无问题地访问这些方法。我可以调用需要numpy 1D数组(或列表,两者相同)的方法,但我不知道如何创建2D或3D JArray以提供给代码 似乎因为numpy数组是嵌入列表的,所以它们不能直接转换为jarray。JCC文档试图解释如何做到这一点,但它完全不清楚 将obj强制转换为文档数组Java 从numpy数组使用jcc创建nd JArray,java,python,numpy,jcc,Java,Python,Numpy,Jcc,我有一些java类(不是我写的),我正试图从python中访问它们。我已经用JCC成功地编译了它们,并且可以毫无问题地访问这些方法。我可以调用需要numpy 1D数组(或列表,两者相同)的方法,但我不知道如何创建2D或3D JArray以提供给代码 似乎因为numpy数组是嵌入列表的,所以它们不能直接转换为jarray。JCC文档试图解释如何做到这一点,但它完全不清楚 将obj强制转换为文档数组 JArray('object').cast_(obj, Document) 在这两
JArray('object').cast_(obj, Document)
在这两种情况下,obj的java类型必须与它被>转换到的数组类型兼容
使用嵌套数组:
我还尝试像jcc文档那样将JArrays重新嵌入到JArrays中,但这似乎也不起作用。至少对于双数组,您可以通过以下方式实现:
a = JArray('double')(np.ones(3))
b = JArray('double')(np.ones(3))
ab = JArray('object')((a, b))
这将创建一个二维数组(还没有弄清楚如何使用张量)遗憾的是,几乎不可能弄清楚如何使JArray与numpy数组兼容,这使得jcc难以与非纯python代码一起使用。无论如何,谢谢你,它确实有效,但是就像你说的,再次嵌入thta来创建3D阵列只是让整个事情变得神秘。
import my_java_class
import numpy as np
my_java_class.initVM()
arr = np.ones(10)
# This makes a 1d JArray that can be later used by the java classes in my_java_class
j_arr = my_java_class.JArray('float')(arr)
arr_2d = np.ones((10,10))
# This fails since the nested lists can't be converted to a 2d JArray.
j_arr2d = my_java_class.JArray('float')(arr_2d)
a = JArray('double')(np.ones(3))
b = JArray('double')(np.ones(3))
ab = JArray('object')((a, b))