Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- aa = range(-10,10)
- np.argmax(aa>5)
- In [2]: N = 10000
- In [3]: aa = np.arange(-N,N)
- In [4]: timeit np.argmax(aa>N/2)
- 100000 loops, best of 3: 52.3 us per loop
- In [5]: timeit np.where(aa>N/2)[0][0]
- 10000 loops, best of 3: 141 us per loop
- In [6]: timeit np.nonzero(aa>N/2)[0][0]
- 10000 loops, best of 3: 142 us per loop
- import time
- N = 10000
- aa = np.arange(-N,N)
- %timeit np.searchsorted(aa, N/2)+1
- %timeit np.argmax(aa>N/2)
- %timeit np.where(aa>N/2)[0][0]
- %timeit np.nonzero(aa>N/2)[0][0]
- # Output
- 100000 loops, best of 3: 5.97 µs per loop
- 10000 loops, best of 3: 46.3 µs per loop
- 10000 loops, best of 3: 154 µs per loop
- 10000 loops, best of 3: 154 µs per loop
- In [34]: a=np.arange(-10,10)
- In [35]: a
- Out[35]:
- array([-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2,
- 3, 4, 5, 6, 7, 8, 9])
- In [36]: np.where(a>5)
- Out[36]: (array([16, 17, 18, 19]),)
- In [37]: np.where(a>5)[0][0]
- Out[37]: 16
- numpy.searchsorted(a, alpha)+1
- numpy.argmax(a > alpha)
- import numpy
- import perfplot
- alpha = 0.5
- def argmax(data):
- return numpy.argmax(data > alpha)
- def where(data):
- return numpy.where(data > alpha)[0][0]
- def nonzero(data):
- return numpy.nonzero(data > alpha)[0][0]
- def searchsorted(data):
- return numpy.searchsorted(data, alpha)+1
- perfplot.show(
- setup=lambda n: numpy.arange(n, dtype=float) / n,
- kernels=[argmax, where, nonzero, searchsorted],
- n_range=[2**k for k in range(2, 20)],
- logx=True,
- logy=True,
- xlabel='len(array)'
- )
Add Comment
Please, Sign In to add comment