Guest User

Untitled

a guest
Jan 20th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. aa = range(-10,10)
  2.  
  3. np.argmax(aa>5)
  4.  
  5. In [2]: N = 10000
  6.  
  7. In [3]: aa = np.arange(-N,N)
  8.  
  9. In [4]: timeit np.argmax(aa>N/2)
  10. 100000 loops, best of 3: 52.3 us per loop
  11.  
  12. In [5]: timeit np.where(aa>N/2)[0][0]
  13. 10000 loops, best of 3: 141 us per loop
  14.  
  15. In [6]: timeit np.nonzero(aa>N/2)[0][0]
  16. 10000 loops, best of 3: 142 us per loop
  17.  
  18. import time
  19. N = 10000
  20. aa = np.arange(-N,N)
  21. %timeit np.searchsorted(aa, N/2)+1
  22. %timeit np.argmax(aa>N/2)
  23. %timeit np.where(aa>N/2)[0][0]
  24. %timeit np.nonzero(aa>N/2)[0][0]
  25.  
  26. # Output
  27. 100000 loops, best of 3: 5.97 µs per loop
  28. 10000 loops, best of 3: 46.3 µs per loop
  29. 10000 loops, best of 3: 154 µs per loop
  30. 10000 loops, best of 3: 154 µs per loop
  31.  
  32. In [34]: a=np.arange(-10,10)
  33.  
  34. In [35]: a
  35. Out[35]:
  36. array([-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2,
  37. 3, 4, 5, 6, 7, 8, 9])
  38.  
  39. In [36]: np.where(a>5)
  40. Out[36]: (array([16, 17, 18, 19]),)
  41.  
  42. In [37]: np.where(a>5)[0][0]
  43. Out[37]: 16
  44.  
  45. numpy.searchsorted(a, alpha)+1
  46.  
  47. numpy.argmax(a > alpha)
  48.  
  49. import numpy
  50. import perfplot
  51.  
  52.  
  53. alpha = 0.5
  54.  
  55. def argmax(data):
  56. return numpy.argmax(data > alpha)
  57.  
  58. def where(data):
  59. return numpy.where(data > alpha)[0][0]
  60.  
  61. def nonzero(data):
  62. return numpy.nonzero(data > alpha)[0][0]
  63.  
  64. def searchsorted(data):
  65. return numpy.searchsorted(data, alpha)+1
  66.  
  67.  
  68. perfplot.show(
  69. setup=lambda n: numpy.arange(n, dtype=float) / n,
  70. kernels=[argmax, where, nonzero, searchsorted],
  71. n_range=[2**k for k in range(2, 20)],
  72. logx=True,
  73. logy=True,
  74. xlabel='len(array)'
  75. )
Add Comment
Please, Sign In to add comment