Hi Stefan, On Thu, May 22, 2008 at 10:23 PM, Stéfan van der Walt wrote: > Hi Andrea > > 2008/5/22 Andrea Gavana <[EMAIL PROTECTED]>: >> By the way, about the solution Francesc posted: >> >> xyzReq = (xCent >= xMin) & (xCent <= xMax) & \ >> (yCent >= yMin) & (yCent <= yMax) & \ >> (zCent >= zMin) & (zCent <= zMax) >> >> xyzReq = numpy.nonzero(xyzReq)[0] >> >> Do you think is there any chance that a C extension (or something >> similar) could be faster? Or something else using weave? I understand >> that this solution is already highly optimized as it uses the power of >> numpy with the logic operations in Python, but I was wondering if I >> can make it any faster: on my PC, the algorithm runs in 0.01 seconds, >> more or less, for 150,000 cells, but today I encountered a case in >> which I had 10800 sub-grids... 10800*0.01 is close to 2 minutes :-( >> Otherwise, I will try and implement it in Fortran and wrap it with >> f2py, assuming I am able to do it correctly and the overhead of >> calling an external extension is not killing the execution time. > > I wrote a quick proof of concept (no guarantees). You can find it > here (download using bzr, http://bazaar-vcs.org, or just grab the > files with your web browser): > > https://code.launchpad.net/~stefanv/+junk/xyz > > 1. Install Cython if you haven't already > 2. Run "python setup.py build_ext -i" to build the C extension > 3. Use the code, e.g., > > import xyz > out = xyz.filter(array([1.0, 2.0, 3.0]), 2, 5, > array([2.0, 4.0, 6.0]), 2, 4, > array([-1.0, -2.0, -4.0]), -3, -2) > > In the above case, out is [False, True, False].
Thank you very much for this! I am going to try it and time it, comparing it with the other implementations. I think I need to study a bit your code as I know almost nothing about Cython :-D Thank you! Andrea. "Imagination Is The Only Weapon In The War Against Reality." http://xoomer.alice.it/infinity77/ _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion