我想在 C(Swig) 中将 numpy double 数组转换为 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?我错过了什么吗?
请您参考如下方法:
您的方法是正确的,但您对 numpy C API 的假设是错误的。 NPY_FLOAT 只是一个整数常量,但是您发布的函数需要类型参数 指向 PyArray_Descr 的指针结构。
为了从单纯的类型中获取类型描述,您可以调用 PyArray_DescrFromType,因此您的调用可能如下所示:
PyArrayObject* float_array = (PyArrayObject*)PyArray_FromAny(input,PyArray_DescrFromType(NPY_FLOAT64), 0,0, flags);
...标志是您认为在转换时有意义的任何标志 - 请查看 numpy API,了解正确的 API 调用以及不同标志和值的含义。
