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 <yo...@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@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion