Numpy已然无法在边缘化了

使用pandas时不应忘记的一点是Pandas的Series和DataFrames是在NumPy库之上设计的。并且,pandas可以与NumPy阵列和操作无缝衔接。

下面我们使用NumPy的 digitize()函数更进一步。它类似于上面pandas的cut(),因为数据将被分箱,但这次它将由一个索引数组表示,这些索引表示每小时所属的bin。然后将这些索引应用于价格数组:


  1. @timeit(repeat=3number=100 
  2. def apply_tariff_digitize(df):  
  3.     prices = np.array([12, 20, 28])  
  4.     bins = np.digitize(df.index.hour.values, bins=[7, 17, 24])  
  5.     df['cost_cents'] = prices[bins] * df['energy_kwh'].values 

与cut函数一样,这种语法非常简洁易读。


  1. >>> apply_tariff_digitize(df)  
  2. Best of 3 trials with 100 function calls per trial:  
  3. Function `apply_tariff_digitize` ran in average of 0.002 seconds. 

0.002秒! 虽然仍有性能提升,但已经很边缘化了。

【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章