我想将numpy double数组转换为C(Swig)中的numpy float数组。 我正在尝试使用
PyObject *object = PyArray_FROM_OT(input,NPY_FLOAT)
或
PyObject *object = PyArray_FROMANY(input,NPY_FLOAT,0,0,NPY_DEFAULT)
或
PyObject *object = PyArray_FromObject(input,NPY_FLOAT,0,0)
或
PyObject *object = PyArray_ContiguousFromAny(input,NPY_FLOAT,0,0)
但是所有这些都返回NULL?我错过了什么吗?
答案 0 :(得分:4)
你的方法是正确的,但你对他们numpy C API的假设不是。 NPY_FLOAT只是一个整数常量,但是你发布的函数要求type参数是PyArray_Descr struct 的poitner。
为了从单纯的类型中获取类型描述,您可以调用PyArray_DescrFromType,因此您的调用可能如下所示:
PyArrayObject* float_array = (PyArrayObject*)PyArray_FromAny(input,PyArray_DescrFromType(NPY_FLOAT64), 0,0, flags);
...标志是你在转换时认为有意义的任何标志 - 请查看numpy API,以获得正确的API调用以及不同标志和值的含义。