Функция
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;
}