NotImplementedError: PyArray_FromDimsAndDataAndDescr报错求助
解决PyArray_FromDimsAndDataAndDescr报错的可行方案
相关代码与报错信息
调用代码
MOSFET.z=around(z/10.0,2) densex = MOSFET.x densey = MOSFET.y densez = MOSFET.z X1=nonuniformgrid(array([min(densex)-1,0.1,min(densex),0.4]))
报错信息
out=nonuniformgridmod(argu); NotImplementedError: PyArray_FromDimsAndDataAndDescr: use PyArray_NewFromDescr.
关联的nonuniformgrid函数代码
def nonuniformgrid(argu): #This is a wrapper for the nonuniformgridmod function #so to convert both the argument and the output to numpy arrays #I convert the argument in an array argarr=array(argu); out=nonuniformgridmod(argu); # I return a pyarray outarr=array(out); return outarr;
可行解决方案
- 修正参数传递错误:当前函数中已经将输入
argu转换为numpy数组argarr,但实际传给nonuniformgridmod的仍是原始argu,需改为传递转换后的数组:def nonuniformgrid(argu): argarr = array(argu) out = nonuniformgridmod(argarr) # 传递转换后的numpy数组 outarr = array(out) return outarr - 适配numpy API版本:报错提示的
PyArray_FromDimsAndDataAndDescr是已废弃的numpy C API,需替换为PyArray_NewFromDescr。如果nonuniformgridmod是自研的C扩展,修改内部数组创建逻辑;如果是第三方库,升级库到适配当前numpy版本的最新版。 - 规范数组类型与维度:显式指定传入数组的数据类型,确保与
nonuniformgridmod的要求匹配,例如:argarr = array(argu, dtype=np.float32) # 根据函数需求选择合适类型 - 校验输入参数合法性:调用
nonuniformgrid前,检查输入数组是否存在异常值(如NaN、无穷大),同时确认数组维度符合nonuniformgridmod的预期。
内容的提问来源于stack exchange,提问作者Niloy
相关产品推荐
相关产品推荐

