我在Python上用了很多argmin和argmax。
很遗憾,功能很慢。
我做了一些搜索,我能找到的最好的是:
deffastest_argmax(Array ) :
阵列=列表(阵列) )。
返回阵列. index (max ) Array ) )
不幸的是,该解决方案仍然只有np.max的一半。 我想应该能找到和np.max一样快的东西。
x=NP.random.randn(10 ) )。
%timeitNP.argmax(x ) )。
10000 loops,best of 3: 21.8 us per loop
是%timeitfastest_argmax(x )
10000 loops,best of 3: 20.8 us per loop
请注意,这适用于Pandas DataFrame Groupby
例如。
% time it grp2[ ' odds ' ].agg ([ fastest _ arg max ] )。
100 loops,best of 3: 8.8 ms per loop
% time it grp2[ ' odds ' ].agg ([ NP.arg max ] )。
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
5319660 682512 2.04
682513 2.08
682514 2.10
682515 2.12
682516 2.14
5510310 682520 4.10
682521 4.40
682522 4.50
682523 4.80
682524 5.30
5559264 682526 5.00
682527 5.30
682528 5.40
682529 5.50
682530 5.60
5585869 682533 1.96
682534 1.97
682535 1.98
682536 2.02
682537 2.04
6064546 682540 3.00
682541 2.74
682542 2.76
682543 2.96
682544 3.05
104601200 4916112 682548 2.64
682549 2.68
682550 2.70
682551 2.72
682552 2.74
5315859 682557 2.90
682558 2.92
682559 3.05
682560 3.10
682561 3.15
5356995 682564 2.42
682565 2.44
682566 2.48
682567 2.50
682568 2.52
5465225 682573 1.85
682574 1.89
682575 1.91
682576 1.93
682577 1.94
5773661 682588 5.00
682589 4.40
682590 4.90
682591 5.10
6013187 682592 5.00
682593 4.20
682594 4.30
682595 4.40
682596 4.60
104606300 2489827 683438 4.00
683439 3.90
683440 3.95
683441 4.30
683442 4.40
3602724 683446 2.16
683447 2.32
Name: ODDS、Length: 65、dtype: float64