If your positions are static (I'm not clear on that from your message), then you might want to check the technique of "slice searching". It only requires one sort of the data for each dimension initially, then uses a simple, but clever look up to find neighbors within some epsilon of a chosen point. Speeds appear to be about equal to k-d trees. Programming is vastly simpler than k-d trees, however.
See, [1] "A Simple Algorithm for Nearest Neighbor Search in High Dimensions," Sameer A. Nene and Shree K. Nayar, IEEE TRANSACTIONS ON PATTERN ANALYSIS AND MACHINE INTELLIGENCE 19 (9), 989 (1997). -- Lou Pecora, my views are my own. --- On Thu, 7/10/08, Dan Lussier <[EMAIL PROTECTED]> wrote: > From: Dan Lussier <[EMAIL PROTECTED]> > Subject: [Numpy-discussion] huge array calculation speed > To: numpy-discussion@scipy.org > Date: Thursday, July 10, 2008, 12:38 PM > Hello, > > I am relatively new to numpy and am having trouble with the > speed of > a specific array based calculation that I'm trying to > do. > > What I'm trying to do is to calculate the total total > potential > energy and coordination number of each atom within a > relatively large > simulation. Each atom is at a position (x,y,z) given by a > row in a > large array (approximately 1e6 by 3) and presently I have > no > information about its nearest neighbours so each its > position must be > checked against all others before cutting the list down > prior to > calculating the energy. _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion