[Numpy-discussion] 2D binning

Keith Goodman kwgoodman@gmail....
Tue Jun 1 15:22:33 CDT 2010


On Tue, Jun 1, 2010 at 1:07 PM, Mathew Yeates <mat.yeates@gmail.com> wrote:
> Hi
> Can anyone think of a clever (non-lopping) solution to the following?
> A have a list of latitudes, a list of longitudes, and list of data values.
> All lists are the same length.
> I want to compute an average  of data values for each lat/lon pair. e.g. if
> lat[1001] lon[1001] = lat[2001] [lon [2001] then
> data[1001] = (data[1001] + data[2001])/2
> Looping is going to take wayyyy to long.

Looping N and searching in N would be O(N^2). But would it be too long
just to loop, so O(N)? If you need to find all averages you could try
something like this:

from collections import defaultdict

def aggdict(x):
    "Convert [(1, 'a'), (2, 'b'), (1, 'A')] to {1: ['a', 'A'], 2: ['b']}."
    d = defaultdict(list)
    for k, v in x:
        d[k].append(v)
    return dict(d)


More information about the NumPy-Discussion mailing list