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]. Regards Stéfan _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion