[Numpy-discussion] PyArray_SETITEM with object arrays in Cython

Hanni Ali hanni.ali at gmail.com
Wed Feb 11 12:24:01 EST 2009


Hi Wes,

I do not profess to be an expert, but I have been off loading a fair number
of loops to C from Python code and achieved significant improvements most
have been of the following form (which I have found to be the fastest):

size = *incomingArrayObj->dimensions;

r_dptr = PyArray_DATA(resultArray);

while(size--) {
    r_dptr = result;
    r_dptr++;
}

Where for multidimensional arrays r_dptr could be incremented by the number
of dims rather than just ++:

dims = PyArray_DIM(incomingArrayObj,1);

i have not however actually used PyArray_SETITEM so cannot comment on the
issue you are having.

Hanni



2009/2/11 Wes McKinney <wesmckinn at gmail.com>

> Hello,
>
> I am writing some Cython code and have noted that the buffer interface
> offers very little speedup for PyObject arrays. In trying to rewrite the
> same code using the C API in Cython, I find I can't get PyArray_SETITEM to
> work, in a call like:
>
> PyArray_SETITEM(result, <void *> iterresult.dataptr, obj)
>
> where result is an ndarray of dtype object, and obj is a PyObject*.
>
> Anyone have some experience with this can offer pointers (no pun
> intended!)?
>
> Thanks,
> Wes
>
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion at scipy.org
> http://projects.scipy.org/mailman/listinfo/numpy-discussion
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20090211/5eb53fa0/attachment.html>


More information about the NumPy-Discussion mailing list