2010-07-09 64 views
1

我想將numpy double數組轉換爲C(Swig)中的numpy float數組。 我試圖使用numpy數組類型轉換C

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

還沒有解答?任何人都可以告訴我如何使用API​​轉換類型一般? – lakshmesha 2010-07-19 10:15:39

回答

3

你的方法是正確的,但你對他們numpy C API的假設不是。 NPY_FLOAT只是一個積分常數,但是您發佈的函數需要type參數爲作爲PyArray_Descr結構的一個潛點。

爲了從一個單純的類型得到一個類型的描述,你可以打電話PyArray_DescrFromType,所以你的電話看起來是這樣的:

PyArrayObject* float_array = (PyArrayObject*)PyArray_FromAny(input,PyArray_DescrFromType(NPY_FLOAT64), 0,0, flags); 

...用標誌是什麼標誌你在轉換時認爲有意義的 - 請查看numpy API,以獲取正確的API調用以及不同標誌和值的含義。