I know I have a lot yet to learn about array striding tricks, so please
pardon the triviality of this question.
Here is the problem both in words and "dumb" python:
I have a large NxM array that I want to break down into smaller nxn chunks
where n divides evenly into both N and M. Then I want to calculate the
fraction of pixels in each nxn chunk that meets a certain criteria: say (x > 1)
& (x < 2).
Here is the "dumb" python code:
npix = 4
num_true = numpy.zeros((data.shape[0]/npix, data.shape[1]/npix))
for iline in xrange(0, data.shape[0]/npix):
for ismp in xrange(0, data.shape[1]/npix):
excerpt = data[iline*npix:(iline+1)*npix, ismp*npix:(ismp+1)*npix]
num_true[iline,simp] = numpy.where( (excerpt >= 1) & (excerpt <= 2),
True, False).sum()
so I'm looping through the number of 4x4 subsets in both dimensions, cutting
out a chunk
of the data ("excerpt"), and then counting the number of pixels in that excerpt
that
meet a certain criteria and storing that result for each excerpt.
I want to avoid all the loops over iline and ismp. What's the best way of
doing this
in pure python? I could always write a Fortran/C routine for this task, but I
want to
learn how best to do it with numpy.
Thank you for any advice,
Catherine
_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion