Функция
PyObject* PyArray_TypeObjectFromType(int);
преобразует номер типа для скалярного типа NumPy (NPY_BOOL, NPY_BYTE, ...) в соответствующий объект типа.
Как выполнить обратное преобразование из объекта типа для скалярного типа NumPy в соответствующий номер типа?
Редактировать: Следующий код основан на ответе Кватфорда. Он принимает как объекты типа, такие как 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;
}