C中的NumPy数组类型转换

3
我希望将numpy双精度数组在C(Swig)中转换为numpy浮点数数组。 我正在尝试使用


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?我有什么遗漏吗?

还没有答案?有人可以告诉我如何通常使用API转换类型吗? - lakshmesha
1个回答

5
你的方法是正确的,但是你对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调用还是不同标志和值的含义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接