large arrays in python (scientific)

Jason Orendorff jason at jorendorff.com
Wed Jan 9 20:04:16 EST 2002


> > from __future__ import generators
> > from Scientific.Functions.LeastSquares import leastSquaresFit
> > This reads the data from the file once per iteration
> > (leastSquaresFit is an iterative algorithm), which is slow;
> > but it does not store the whole data set in memory, which
> > might be helpful.
>
> Assuming that your data points are evenly distributed in a grid,
> you could
> probably trim that down so that you didn't have to explicitly store the
> (x,y,z).

Indeed, ideally:

from __future__ import generators

class MyData:
    """ Wrapper for data.

    This presents a Numeric Python array in a way that
    Scientific.Functions.LeastSquares can understand.
    """

    def __init__(self, array):
        self.array = array

    def __iter__(self):
        array = self.array
        [xr, yr, zr] = [range(N) for N in array.shape]
        for x in xr:
            for y in yr:
                for z in zr:
                    yield ((x, y, z), array[x, y, z])


> BTW- I keep reading interesting examples of generators... they seem
> interesting, and occassionally even useful.  Where can I find some good
> info on 'em?

Well... I don't know.  PEP 255; python22/lib/test/test_generators.py...
this article...

http://www-106.ibm.com/developerworks/linux/library/l-pycon.html?dwzone=linu
x

## Jason Orendorff    http://www.jorendorff.com/





More information about the Python-list mailing list