I guess it&#39;s as fast as I&#39;m going to get. I don&#39;t really see any other way. BTW, the lat/lons are integers)<div><br></div><div>-Mathew<br><br><div class="gmail_quote">On Tue, Jun 1, 2010 at 1:49 PM, Zachary Pincus <span dir="ltr">&lt;<a href="mailto:zachary.pincus@yale.edu">zachary.pincus@yale.edu</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div></div><div class="h5">&gt; Hi<br>
&gt; Can anyone think of a clever (non-lopping) solution to the following?<br>
&gt;<br>
&gt; A have a list of latitudes, a list of longitudes, and list of data<br>
&gt; values. All lists are the same length.<br>
&gt;<br>
&gt; I want to compute an average  of data values for each lat/lon pair.<br>
&gt; e.g. if lat[1001] lon[1001] = lat[2001] [lon [2001] then<br>
&gt; data[1001] = (data[1001] + data[2001])/2<br>
&gt;<br>
&gt; Looping is going to take wayyyy to long.<br>
<br>
</div></div>As a start, are the &quot;equal&quot; lat/lon pairs exactly equal (i.e. either<br>
not floating-point, or floats that will always compare equal, that is,<br>
the floating-point bit-patterns will be guaranteed to be identical) or<br>
approximately equal to float tolerance?<br>
<br>
If you&#39;re in the approx-equal case, then look at the KD-tree in scipy<br>
for doing near-neighbors queries.<br>
<br>
If you&#39;re in the exact-equal case, you could consider hashing the lat/<br>
lon pairs or something. At least then the looping is O(N) and not<br>
O(N^2):<br>
<br>
import collections<br>
grouped = collections.defaultdict(list)<br>
for lt, ln, da in zip(lat, lon, data):<br>
   grouped[(lt, ln)].append(da)<br>
<br>
averaged = dict((ltln, numpy.mean(da)) for ltln, da in grouped.items())<br>
<br>
Is that fast enough?<br>
<br>
Zach<br>
<div><div></div><div class="h5">_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org">NumPy-Discussion@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/numpy-discussion" target="_blank">http://mail.scipy.org/mailman/listinfo/numpy-discussion</a><br>
</div></div></blockquote></div><br></div>