Wow, great! I'm excited to try this. I think your patch significantly increases the extendability of numpy.
Is the C-API exposed currently? Can you use the API from Cython (meaning is the numpy.pxd file updated)? On Tue, Jan 4, 2011 at 12:04 PM, Mark Wiebe <mwwi...@gmail.com> wrote: > On Sat, Jan 1, 2011 at 11:23 AM, John Salvatier <jsalv...@u.washington.edu > > wrote: > >> This thread is a bit old, but since it's not possible to use the C-API is >> possible to accomplish this same thing with the Python API? >> > > I've committed Python exposure for nested iteration to the new_iterator > branch. In doing so, I also changed the mechanism in C. I found that it > was simpler to expose to Python if I added a Reset function which gives new > base data pointers, and this also simplifies C code using nested iterators. > > The Python code > > a = arange(2).reshape(2,1) > b = arange(3).reshape(1,3) > > i, j = np.nested_iters([a,b], [[0],[1]]) > for x in i: > print "inner:" > for y in j: > print y[0], y[1] > > > gives > > inner: > 0 0 > 0 1 > 0 2 > inner: > 1 0 > 1 1 > 1 2 > > > and C code for nested iteration looks something like this: > > NpyIter *iter1, *iter1; > NpyIter_IterNext_Fn iternext1, iternext2; > char **dataptrs1; > > /* > * With the exact same operands, no copies allowed, and > * no axis in op_axes used both in iter1 and iter2. > * Buffering may be enabled for iter2, but not for iter1. > */ > iter1 = ...; iter2 = ...; > > iternext1 = NpyIter_GetIterNext(iter1); > iternext2 = NpyIter_GetIterNext(iter2); > dataptrs1 = NpyIter_GetDataPtrArray(iter1); > > do { > NpyIter_ResetBasePointers(iter2, dataptrs1); > do { > /* Use the iter2 values */ > } while (iternext2(iter2)); > } while (iternext1(iter1)); > > Cheers, > Mark > > _______________________________________________ > 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