[Numpy-discussion] nditer: possible to manually handle dimensions with different lengths?

Mark Wiebe mwwiebe@gmail....
Fri Sep 30 19:04:41 CDT 2011


On Fri, Sep 30, 2011 at 8:03 AM, John Salvatier
<jsalvati@u.washington.edu>wrote:

> Using nditer, is it possible to manually handle dimensions  with different
> lengths?
>
> For example, lets say I had an array A[5, 100] and I wanted to sample every
> 10 along the second axis so I would end up with an array B[5,10]. Is it
> possible to do this with nditer, handling the iteration over the second axis
> manually of course (probably in cython)?
>
> I want something like this (modified from
> http://docs.scipy.org/doc/numpy/reference/arrays.nditer.html#putting-the-inner-loop-in-cython
> )
>
> @cython.boundscheck(False)
> def sum_squares_cy(arr):
>     cdef np.ndarray[double] x
>     cdef np.ndarray[double] y
>     cdef int size
>     cdef double value
>     cdef int j
>
>     axeslist = list(arr.shape)
>     axeslist[1] = -1
>
>     out = zeros((arr.shape[0], 10))
>     it = np.nditer([arr, out], flags=['reduce_ok', 'external_loop',
>                                       'buffered', 'delay_bufalloc'],
>                 op_flags=[['readonly'], ['readwrite', 'no_broadcast']],
>                 op_axes=[None, axeslist],
>                 op_dtypes=['float64', 'float64'])
>     it.operands[1][...] = 0
>     it.reset()
>     for xarr, yarr in it:
>         x = xarr
>         y = yarr
>         size = x.shape[0]
>         j = 0
>         for i in range(size):
>            #some magic here involving indexing into x[i] and y[j]
>     return it.operands[1]
>
> Does this make sense? Is it possible to do?
>

I'm not sure I understand precisely what you're asking. Maybe you could
reshape A to have shape [5, 10, 10], so that one of those 10's can match up
with the 10 in B, perhaps with the op_axes?

-Mark


>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/numpy-discussion/attachments/20110930/9c7d16c0/attachment.html 


More information about the NumPy-Discussion mailing list