[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