多维数组的指数衰减和

2024-05-16 17:37:58 发布

您现在位置:Python中文网/ 问答频道 /正文

与此question类似,我想快速使用jit将指数求和函数应用于至少10列(在下面的示例中简化为3列)

#Initial Dataframe

df = pd.DataFrame({'time': [1, 2.1, 2.13, 3.7, 10, 10.2], 
               'A': [1, 3, -1, 7, 2, 1],
               'B': [0, 3, 5, 7, 20, 4],
               'C': [1, 0, 0, 0, 2, 0]})
 
#Decay Constant

decay_constant = .05 * df.time
df['weight'] = np.exp(-df.time.diff() * decay_constant)
df.weight.iat[0] = 1

from numba import jit

@jit(nopython=True)
def exponential_sum(A, k):
    total = A[0]
    yield total
    for i in range(1, len(A)): 
        total = total * k[i] + A[i]
        yield total

这就是我奋斗的地方。我运行以下命令

df['expSum'] = list(exponential_sum(df[['A','B','C']].values, df.weight.values))

这给了我一个expSum列中无意义的值列表,这些值不是函数计算的每列的指数和。最后,我想分解expSum列并重命名A、B、C列。。。这将是一个指数和值的新数据帧

我真正的数据帧有3000多列和3000多行

任何帮助都将不胜感激


Tags: 数据函数dftime指数jittotalvalues