构建日志返回序列的最快、最优雅的解决方案是什么?
问题主要在于映射一个函数,该函数将第 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 内部结构没有什么经验。
请您参考如下方法:
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))
