我在Python中使用了很多argmin和argmax.
不幸的是,功能很慢.
我做了一些搜索,我能找到的最好的是:
def fastest_argmax(array):
array = list( array )
return array.index(max(array))
不幸的是,这个解决方案仍然只有np.max的一半,我想我应该能找到与np.max一样快的东西.
x = np.random.randn(10)
%timeit np.argmax( x )
10000 loops, best of 3: 21.8 us per loop
%timeit fastest_argmax( x )
10000 loops, best of 3: 20.8 us per loop
请注意,我将此应用于Pandas DataFrame Groupby
例如.
%timeit grp2[ 'ODDS' ].agg( [ fastest_argmax ] )
100 loops, best of 3: 8.8 ms per loop
%timeit grp2[ 'ODDS' ].agg( [ np.argmax ] )
100 loops, best of 3: 11.6 ms per loop
数据如下所示:
grp2[ 'ODDS' ].head()
Out[60]:
EVENT_ID SELECTION_ID
104601100 4367029 682508 3.05
682509 3.15
682510 3.25
682511 3.35
53196