Chức năngNumPy C-API: chuyển đổi loại đối tượng để gõ số
PyObject* PyArray_TypeObjectFromType(int);
chuyển số kiểu cho một vô hướng loại NumPy (NPY_BOOL, NPY_BYTE, ...) cho các đối tượng loại tương ứng.
Làm cách nào để bạn thực hiện chuyển đổi ngược lại, từ đối tượng loại cho loại vô hướng NumPy sang số loại tương ứng?
Chỉnh sửa: Mã sau dựa trên câu trả lời của kwatford. Nó chấp nhận cả hai đối tượng kiểu như int và numpy.int16 và các chuỗi như "int", u "int" và "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;
}
Điều đó không trả lời được câu hỏi của tôi. Tôi chỉ có đối tượng kiểu để làm việc. Tôi đang viết một mô-đun mở rộng Python trong đó một trong các hàm có giao diện Python lấy một đối tượng kiểu cho một loại vô hướng. – user763305
Sau đó, bạn có thể đang tìm kiếm [PyArray_DescrConverter] (http://docs.scipy.org/doc/numpy/reference/c-api.array.html#PyArray_DescrConverter) cần có loại hoặc tên của một loại (hoặc những thứ khác bạn có thể cung cấp cho 'numpy.dtype') và nhận được descr cho nó. Từ đó bạn có thể lấy số kiểu, nhập loại, nhập đối tượng hoặc bất kỳ thứ gì bạn muốn. – kwatford
+1: Điều đó giải quyết được vấn đề. Xem chỉnh sửa trong câu hỏi của tôi ở trên. – user763305