NumPy Cı-API: dönüştürme türü nesne numaralı
PyObject* PyArray_TypeObjectFromType(int);
karşılık gelen bir tür nesne için bir NumPy skalar türü (NPY_BOOL, NPY_BYTE, ...) için tip numarasını çevirir fonksiyonu için gereklidir.
Tersine dönüştürmeyi, NumPy scalar tipi için yazım nesnesinden gelen tür numarasına nasıl yazarsınız?
Düzenleme: Aşağıdaki kod kwatford'un yanıtını temel alır. Int ve numpy.int16 gibi tür nesneleri ve "int", u "int" ve "int16" gibi dizeleri kabul eder. Eğer PyArray_Descr
yapılar yerine PyArray_TypeObject
s alabilirsiniz
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;
}
Bu benim soruma cevap vermiyor. Sadece çalışacak tip nesnesine sahibim. Fonksiyonlardan birinin skaler tip için bir yazım nesnesini alan bir Python arabirimine sahip olduğu bir Python uzantı modülü yazıyorum. – user763305
O zaman muhtemelen bir tür veya bir tür adı alması gereken [PyArray_DescrConverter] (http://docs.scipy.org/doc/numpy/reference/c-api.array.html#PyArray_DescrConverter) 'ı arıyorsanız (veya "numpy.dtype" 'e verebileceğiniz diğer şeyler) ve bunun için descr olsun. Bundan tür numarası alabilir, tür yazabilir, nesneyi veya istediğiniz herhangi bir şeyi yazabilirsiniz. – kwatford
+1: Sorun çözüldü. Yukarıdaki sorudaki düzenlemeye bakın. – user763305