如何在C中检查ndarray的数据类型

Mag*_*n88 6 c numpy

谁能告诉我如何检查ndarray已传递给C代码的数据类型?

在具体的例子中,如果数组的数据类型是float32或,我想调用一个不同的函数double/float64.所以像

if( Dtype(MyArray) == NPY_FLOAT )
{
   DoSomething_float( MyArray );
}
else
{
   DoSomething_double( MyArray );
}
Run Code Online (Sandbox Code Playgroud)

我已经找到了

PyTypeNum_ISFLOAT(num)
PyDataType_ISFLOAT(descr)
PyArray_ISFLOAT(obj)
Run Code Online (Sandbox Code Playgroud)

在numpy C API中,但我不明白如何使用它们.我已经试图找到一个有启发性的例子,但没有找到.

uml*_*ute 7

你几乎就在那里,因为你在寻找PyArray_TYPE:

int typ=PyArray_TYPE(MyArray);

switch(typ) {
case NPY_FLOAT:
    DoSomething_single(MyArray);
    break;
case NPY_DOUBLE:
    DoSomething_double(MyArray);
    break;
default:
    error("unknown type %d of MyArray\n", typ);
}
Run Code Online (Sandbox Code Playgroud)