Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从numpy数组使用jcc创建nd JArray_Java_Python_Numpy_Jcc - Fatal编程技术网

Java 从numpy数组使用jcc创建nd JArray

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) 在这两

我有一些java类(不是我写的),我正试图从python中访问它们。我已经用JCC成功地编译了它们,并且可以毫无问题地访问这些方法。我可以调用需要numpy 1D数组(或列表,两者相同)的方法,但我不知道如何创建2D或3D JArray以提供给代码

似乎因为numpy数组是嵌入列表的,所以它们不能直接转换为jarray。JCC文档试图解释如何做到这一点,但它完全不清楚

将obj强制转换为文档数组

       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))