Skip to main content
 首页 » 编程设计

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

2025年05月04日15del

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

问题主要在于映射一个函数,该函数将第 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)) 

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