![](https://secure.gravatar.com/avatar/4d4ea6148fef59dff9fa0fc8c309496a.jpg?s=120&d=mm&r=g)
Quick from my phone. Isn't numpy.take() faster than fancy indexing ? -- M Envoyé de mon iPhone
Le 23 juil. 2014 à 11:51, Moritz Beber <moritz.beber@gmail.com> a écrit :
Hello again,
(I somehow lost the ability to reply to your message Matthias, since I got mails in digest mode, apologies for that.)
So I've poked around the code with profilers and got two conflicting pieces of information. I now use a .pyx file (see attachment) and I profiled it in two different ways:
1. Using cProfile which gave the following results:
ncalls tottime percall cumtime percall filename:lineno(function) 1 1.641 1.641 2.303 2.303 distance.pyx:13(masked_euclidean) 44850 0.294 0.000 0.662 0.000 linalg.py:1924(norm) 44850 0.292 0.000 0.292 0.000 {method 'reduce' of 'numpy.ufunc' objects} 44850 0.041 0.000 0.041 0.000 {numpy.core.multiarray.array} 44850 0.023 0.000 0.065 0.000 numeric.py:392(asarray) 44850 0.012 0.000 0.012 0.000 {method 'conj' of 'numpy.ndarray' objects} 1 0.000 0.000 2.303 2.303 <string>:1(<module>) 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
This leads me to believe that, yes, the boolean subset is taking a significant amount of time but the majority is spent in `norm`.
2. I also ran valgrind and that seems to suggest that 55% of the time is spent in the boolean subset (you can get it here: https://dl.dropboxusercontent.com/u/51564502/callgrind.log). Or am I reading the results wrong?
3. I couldn't get the %lprof magic to work in the IPyNB, just get 0 time for the whole function call. Is this possible somehow by now?
So my questions at this point are: Can I improve the fancy indexing somehow? And can I include the scipy distance measures easily so that I avoid the call to numpy.linalg.norm?
Thank you so much, Moritz <distance.pyx> <profile_cython.py> _______________________________________________ SciPy-Dev mailing list SciPy-Dev@scipy.org http://mail.scipy.org/mailman/listinfo/scipy-dev