[Numpy-discussion] nditer: possible to manually handle dimensions with different lengths?
John Salvatier
jsalvati@u.washington....
Fri Sep 30 10:03:40 CDT 2011
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?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/numpy-discussion/attachments/20110930/d203e60e/attachment.html
More information about the NumPy-Discussion
mailing list