Joh*_*åde 6 c python numpy python-c-api
功能
PyObject* PyArray_TypeObjectFromType(int);
Run Code Online (Sandbox Code Playgroud)
将NumPy标量类型(NPY_BOOL,NPY_BYTE,...)的类型编号转换为相应的类型对象.
你如何进行相反的转换,从NumPy标量类型的类型对象到相应的类型号?
编辑:以下代码基于kwatford的答案.它接受类型对象(如int和numpy.int16)和字符串(如"int",u"int"和"int16").
int numpyScalarTypeNumber(PyObject* obj)
{
PyArray_Descr* dtype;
if(!PyArray_DescrConverter(obj, &dtype)) return NPY_NOTYPE;
int typeNum = dtype->type_num;
Py_DECREF(dtype);
return typeNum;
}
Run Code Online (Sandbox Code Playgroud)
如果您可以获得PyArray_Descrstruct 而不是PyArray_TypeObjects,则只需查看type_num字段即可。可以使用PyArray_DescrFromType通过类型号获取 descr 结构。如果您查看该链接,还会发现更多用于将各种内容转换为 descr 结构的函数。一般来说,它们可能比类型对象更有用,并且它们也包含对其类型的引用。