C中的numpy数组类型转换

时间:2010-07-09 14:38:09

标签: python numpy swig

我想将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?我错过了什么吗?

1 个答案:

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