[Numpy-discussion] how to work with numpy.int8 in c

David Cournapeau david@silveregg.co...
Tue Mar 2 19:51:04 CST 2010


James Bergstra wrote:

> 
> Maybe I'm missing something... but I don't think I want to create an array.

Ah, I misunderstood your question. There are at least two ways:

PyObject *ret;
ret = PyArrayScalar_New(UInt8);

Or

PyObject *ret; 

PyArray_Descr *typecode;
 

typecode = PyArray_DescrFromType(PyArray_UINT8); 

ret = PyArray_Scalar(NULL, typecode, NULL);
Py_DECREF(typecode);

One way to set data in it is:

data = PyMem_Malloc(1);
*data = 4;
((PyArrayObject*)ret)->data = data;

Or simpler, but may be less flexible depending on what you are doing:

PyArrayScalar_VAL(ret, UInt8) = 4;

This should be documented better somewhere,

cheers,

David


More information about the NumPy-Discussion mailing list