Re: [Numpy-discussion] Calculating density based on distance

2012-01-14 Thread Benjamin Root
On Saturday, January 14, 2012, Thiago Franco de Moraes 
totonixs...@gmail.com wrote:
 Hi all,

 I have the following problem:

 Given a array with dimension Nx3, where N is generally greater than
 1.000.000, for each item in this array I have to calculate its density,
 Where its density is the number of items from the same array with
 distance less than a given r. The items are the rows from the array.

 I was not able to think a solution to this using one or two functions of
 Numpy. Then I wrote this code http://pastebin.com/iQV0bMNy . The problem
 it so slow. So I tried to implement it in Cython, here the result
 http://pastebin.com/zTywzjyM , but it is very slow yet.

 Is there a better and faster way of doing that? Is there something in my
 Cython implementation I can do to perform better?

 Thanks!

Have you looked at scipy.spatial.KDTree?  It can efficiently load up a data
structure that lets you easily determine the spatial relationship between
datapoints.

Ben Root
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] Calculating density based on distance

2012-01-14 Thread Sturla Molden
Den 14.01.2012 21:52, skrev Thiago Franco de Moraes:
 Is there a better and faster way of doing that? Is there something in my
 Cython implementation I can do to perform better?



You need to use a kd-tree to make the computation run in O(n log n) time 
instead of O(n**2).

scipy.spatial.cKDTree is very fast.

Sturla

___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] Calculating density based on distance

2012-01-14 Thread Thiago Franco Moraes
No dia Sábado, 14 de Janeiro de 2012, Benjamin rootben.r...@ou.edu escreveu:


 On Saturday, January 14, 2012, Thiago Franco de Moraes 
totonixs...@gmail.com wrote:
 Hi all,

 I have the following problem:

 Given a array with dimension Nx3, where N is generally greater than
 1.000.000, for each item in this array I have to calculate its density,
 Where its density is the number of items from the same array with
 distance less than a given r. The items are the rows from the array.

 I was not able to think a solution to this using one or two functions of
 Numpy. Then I wrote this code http://pastebin.com/iQV0bMNy . The problem
 it so slow. So I tried to implement it in Cython, here the result
 http://pastebin.com/zTywzjyM , but it is very slow yet.

 Is there a better and faster way of doing that? Is there something in my
 Cython implementation I can do to perform better?

 Thanks!

 Have you looked at scipy.spatial.KDTree?  It can efficiently load up a
data structure that lets you easily determine the spatial relationship
between datapoints.

 Ben Root

Thanks, Ben, I'm going to do that.
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion