Skip to main content
 首页 » 编程设计

python之C中的numpy数组类型转换

2024年08月12日34mq0036

我想在 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 调用以及不同标志和值的含义。