1
如何将NumPy数组转换为Java数组,但不是反之亦然 - 如何将数据从Java对象转换回NumPy数组。我有一个Python脚本是这样的:将Java数组快速转换为NumPy数组(Py4J)
from py4j.java_gateway import JavaGateway
gateway = JavaGateway() # connect to the JVM
my_java = gateway.jvm.JavaClass(); # my Java object
....
int_array=my_java.doSomething(int_array); # do something
my_numpy=np.zeros((size_y,size_x));
for jj in range(size_y):
for ii in range(size_x):
my_numpy[jj,ii]=int_array[jj][ii];
my_numpy
是numpy的阵列,int_array
是整数的Java数组 - int[ ][ ]
类型的数组。在Python脚本初始化为:
int_class=gateway.jvm.int # make int class
double_class=gateway.jvm.double # make double class
int_array = gateway.new_array(int_class,size_y,size_x)
double_array = gateway.new_array(double_class,size_y,size_x)
虽然,它的工作原理,因为它是,它是不是最快的方式相当缓慢的工作 - 为1000×1000〜阵列,转换耗时超过5分钟。
有什么办法如何使这与合理的时间?
如果我尝试:
test=np.array(int_array)
我得到:
ValueError: invalid __array_struct__