Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.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
无法将Python扩展(c++)的Numpy数组正确转换为c数组 我正在开发C++中的Python扩展。我在C++中真的生疏了,而且没有必要的经验来解决这个问题。我试图读入numpy数组,进行我想做的计算,然后返回一个numpy数组。我遇到的问题是将numpy数组转换为“c格式”的普通双数组。我尝试了两种方法来转换数据,但结果都是一样的,似乎是在打印数组时存储了内存位置,而不是实际值_Python_C++_Arrays_Numpy_Python Extensions - Fatal编程技术网

无法将Python扩展(c++)的Numpy数组正确转换为c数组 我正在开发C++中的Python扩展。我在C++中真的生疏了,而且没有必要的经验来解决这个问题。我试图读入numpy数组,进行我想做的计算,然后返回一个numpy数组。我遇到的问题是将numpy数组转换为“c格式”的普通双数组。我尝试了两种方法来转换数据,但结果都是一样的,似乎是在打印数组时存储了内存位置,而不是实际值

无法将Python扩展(c++)的Numpy数组正确转换为c数组 我正在开发C++中的Python扩展。我在C++中真的生疏了,而且没有必要的经验来解决这个问题。我试图读入numpy数组,进行我想做的计算,然后返回一个numpy数组。我遇到的问题是将numpy数组转换为“c格式”的普通双数组。我尝试了两种方法来转换数据,但结果都是一样的,似乎是在打印数组时存储了内存位置,而不是实际值,python,c++,arrays,numpy,python-extensions,Python,C++,Arrays,Numpy,Python Extensions,下面是代码和一些注释 静态PyObject*mymodule\u函数PyObject*self,PyObject*args{ PyArrayObject*x_obj,*y_obj; 双*x,*y; 如果!PyArg_ParseTupleargs、O!O!、&PyArray_Type、&x_obj、&PyArray_Type、&y_obj返回NULL; 如果NULL==x_obj,则返回NULL; 如果NULL==y_obj,则返回NULL; npy_intp N=PyArray_DIMx_obj

下面是代码和一些注释

静态PyObject*mymodule\u函数PyObject*self,PyObject*args{ PyArrayObject*x_obj,*y_obj; 双*x,*y; 如果!PyArg_ParseTupleargs、O!O!、&PyArray_Type、&x_obj、&PyArray_Type、&y_obj返回NULL; 如果NULL==x_obj,则返回NULL; 如果NULL==y_obj,则返回NULL; npy_intp N=PyArray_DIMx_obj,0;
std::cout在python中指定a、b、c的数据类型为dtype=np.float64。c中的Double是64位float。像您使用的方式一样使用np.array通常返回np.int64。像这样使用np.array将返回np.float64

a=np.array([1.,2.,3.])

请尝试在python中为a、b、c指定数据类型,因为dtype=np.float64。c中的Double是64位浮点。np.array通常返回np.int64。噢,不,这确实是个问题。谢谢!好的。将升级为answer。目前,尽管在另一端仍然面临问题。当我读取我的数组c时,它仍然像以前一样打印出来E.PROTTC:[2.7064 1052E-312-4.964 26367E+193 2.7120 9304E-312]。但是在我的C++函数返回前打印出来的Z正确地打印出结果。我把我的原始帖子更新到当前的CODIENVEELD,似乎是使用打印语句的一个问题。