Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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
Android studio 将Pyobject转换为java数组时发生typeerror_Android Studio_Chaquopy - Fatal编程技术网

Android studio 将Pyobject转换为java数组时发生typeerror

Android studio 将Pyobject转换为java数组时发生typeerror,android-studio,chaquopy,Android Studio,Chaquopy,pythor脚本返回2d“float64”numpy数组。当我尝试在java中将其分配给“double”数组时,我得到了以下错误“java.lang.ClassCastException:TypeError:无法将float64对象转换为double[]” 编辑 import librosa as lb import numpy as np from os.path import dirname, join de

pythor脚本返回2d“float64”numpy数组。当我尝试在java中将其分配给“double”数组时,我得到了以下错误“java.lang.ClassCastException:TypeError:无法将float64对象转换为double[]”


编辑

import librosa as lb 
import numpy as np 
from os.path import dirname, join                                      

def build_feat(fpath):
     filename = join(dirname(__file__), fpath)
     wav,  rate = lb.load(filename, sr=4000)
     X_sample = lb.feature.mfcc(wav, sr=rate, n_fft=512,  win_length=400, n_mfcc=20,
                                hop_length = 256, n_mels = 128, fmin = 100, fmax = 1800)
     X = X_sample.T
     return X
Java代码:

PyObject pyobj = py.getModule("featureExtraction");         
PyObject obj = pyobj.callAttr("build_feat","107_2b4_Pl_mc_AKGC417L_0.wav");
double[][] feat = obj.toJava(double[][].class);

对于相同的代码,我现在得到了一个不同的错误:
com.chaquo.python.PyException:ValueError:ndarray不是连续的

问题是由于数组被转置而导致的,因此是非连续的


这个问题在Chaquopy 9.0.0中得到了解决。对于较旧的版本,您可以通过返回原始数组(
X\u sample
)或在转置后制作副本(
X\u sample.T.copy()
)来解决此问题。

听起来您可能正在尝试将1D Numpy数组转换为2D Java数组。请编辑您的问题,以包括Python和Java代码的相关部分。另外,您使用的是哪个版本的Chaquopy?我使用的是Chaquopy 8.0.1版。
import librosa as lb import numpy as np from os.path import dirname,join def build_feat(fpath):filename=join(dirname(u file_u_u),fpath)wav,rate=lb.load(filename,sr=4000)X_sample=lb.feature.mfcc(wav,sr=rate,n_fft=512,win_length=400,n_mfcc=20,hop_length=256,n_mels=128,fmin=100,fmax=1800)X=X_sample.T返回X
Java代码:
if(!Python.isStarted())Python.start(新的AndroidPlatform(this));Python py=Python.getInstance();PyObject pyobj=py.getModule(“featureExtraction”);PyObject obj=pyobj.callAttr(“构建专长”,“107_2b4_Pl_mc_AKGC417L_0.wav”);double[][]feat=obj.toJava(double[][]类)这起作用了。非常感谢。我试图在评论部分格式化代码,但没有考虑编辑问题。对不起