在numpy中获取日志返回的最有效方法是什么

时间:2015-05-06 21:13:38

标签: python performance numpy dictionary financial

构建一系列日志返回的最快,最优雅的解决方案是什么?

问题主要在于映射一个函数,该函数将第i个和第(i + 1)个元素作为数组中每个元素的输入。

对于函数和简单数组我可以按如下方式定义日志返回:

import numpy as np
ar = np.random.rand(10)
f_logR = lambda ri, rf: np.log(rf) - np.log(ri)

logR = np.asarray([f_logR(ar[i], rf) for i,rf in enumerate(ar[1:])])

但是,我正在从单个numpy元素构建一个列表,然后再将它转换回numpy数组。

我也是以相当野蛮的方式访问元素,因为我对生成器函数或numpy内部构件缺乏经验。

1 个答案:

答案 0 :(得分:6)

f_logR = lambda ri, rf: np.log(rf) - np.log(ri)
logR = np.asarray([f_logR(ar[i], rf) for i,rf in enumerate(ar[1:])])

相当于

logR = np.diff(np.log(ar))

np.log获取ar中每个值的日志,np.diff获取每个连续值对之间的差异。