[Numpy-discussion] numpy c api general array handling
Mark Wiebe
mwwiebe at gmail.com
Wed Jun 8 11:49:30 EDT 2011
I believe what you may want is PyArray_ContiguousFromAny instead of
PyArray_ContiguousFromObject.
Cheers,
Mark
On Wed, Jun 8, 2011 at 2:58 AM, Yoshi Rokuko <yoshi at rokuko.net> wrote:
> hey,
>
> i'm writing my first python module in c using numpy/arrayobject.h
> and i have some problems with different platforms (both linux but
> really different setup) so i suspect my array handling is not cor-
> rect.
>
> i'm used to c arrays and want to access large numpy arrays from
> within my c module with no strange array-iter-methods. So what are
> your remarks to the following:
>
> PyArg_ParseTuple(args, "OO|ii", &arg1, &arg2, &start, &stop);
> index = (PyArrayObject *) PyArray_ContiguousFromObject(arg1,
> PyArray_INT, 1, 1);
> ix = (int *)index->data;
>
> then using like:
>
> for(k = ix[i]; k < ix[i+1]; k++) l = ix[k];
>
> this seems to work pretty well, but real problems come with:
> PyArg_ParseTuple(args, "O", &arg);
> adjc = (PyArrayObject *) PyArray_ContiguousFromObject(arg,
> PyArray_INT, 2, 2);
> a = (int *)adjc->data;
>
> and then using like:
>
> aik = a[i + n * k];
>
> it seems like on one system it does not accept 2d numpy arrays just
> 1d ones or i must hand him a list of 1d numpy arrays like that:
>
> >>> A = np.array([[1,0],[0,1]])
> >>> B = my.method(list(A))
>
> i would prefer to avoid the list() call in python.
>
> what are your remarks on performance would it be faster to do:
>
> PyArg_ParseTuple(args, "OO|ii", &arg1, &arg2, &start, &stop);
> index = (PyArrayObject *) PyArray_ContiguousFromObject(arg1,
> PyArray_INT, 1, 1);
> ix = malloc(n * sizeof(int));
> for(i = 0; i < n; i++)
> ix[i] = (int *)index->data[i];
>
> and then use ix[] (i call a lot on ix).
>
> thank you and best regards, yoshi
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20110608/a327fa85/attachment.html>
More information about the NumPy-Discussion
mailing list