加速np.arange(1,100)下的值总和

时间:2014-09-30 06:09:15

标签: python numpy pandas

我循环遍历一系列数字,然后计算小于或等于每个范围成员的系列中的内容:

min_odds_range = np.arange( 1.01, 2.0, 0.01 )
df_result = pd.DataFrame( columns=[ 'FILLS' ], index=min_odds_range )
for mo in min_odds_range:
    df_result[ 'FILLS' ] = my_stats[ 'PRICE' ]<=mo

循环代码是我程序中最慢的部分。

如何加快速度?我尝试使用下面的代码进行广播,但它给了我一个NotImplemented异常:

runner_stats[ 'MIN_ODDS' ].lt( pd.DataFrame( np.arange( 1.0, 2.0, 0.1 ) ) )

1 个答案:

答案 0 :(得分:1)

在我看来,您的代码会生成一个数据帧df_result,其中包含一列&#39; FILLS&#39;然后被覆盖10次。只有for循环的最后一次迭代实际上对数据集做了任何事情。

此代码将执行相同的操作,没有循环。我很确定你错过了你的逻辑中的一些东西。

min_odds_range = np.arange( 1.01, 2.0, 0.01 )
df_result = pd.DataFrame( columns=[ 'FILLS' ], index=min_odds_range )
df_result[ 'FILLS' ] = my_stats[ 'PRICE' ] <= 2.0

如果你能为my_stats提供一些样本数据并告诉我们你的目标是什么,那么帮助你就会容易得多。