python - 使用 Scipy Signal 计算之前计算中的正余额

标签 python scipy signal-processing

有没有办法使用 scipy.signal 而不是循环来模拟以下输出?

import pandas as pd
df_in = pd.DataFrame({'Generated':[13,8,7,6],'Consume':[8,10,20,5]})
print(df_in)

   Generated  Consume
0         13        8
1          8       10
2          7       20
3          6        5

df_in['balance'] = [5,3,0,1]

如果 13 - 8 等于余额 5,则 5 将余额移至下一行,而 5+8-10 则得出余额 3。 3 被带入下一行,3+7-10 产生负数,但不能带负数。 因此,下一行 0 进位 + 6 - 5 产生 1 余额。

print(df_in)

预期输出:

   Generated  Consume  balance
0         13        8        5
1          8       10        3
2          7       20        0
3          6        5        1

最佳答案

如果不是要求只有在余额为正时才添加进位,则可以对差额使用累加器。该累加器可以使用 lfilter 来实现,从递推方程中获取ba参数y[n+1] = y[n] + x[n]:

x = df_in['Generated'] - df_in['Consume']
df_in['balance'] = scipy.signal.lfilter([1], [1,-1], x)

不幸的是,仅当余额保持正值时才添加进位会使过程非线性,而 scipy.signal.lfilter 无法处理该过程。此时您必须求助于使用循环来处理特殊情况。

关于python - 使用 Scipy Signal 计算之前计算中的正余额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56615218/

相关文章:

python - MacPorts 安装后,Python 中的 OpenCV 模块失败(退出代码 139)

python - 在 python 和 numpy 中处理大数据,没有足够的内存,如何将部分结果保存在磁盘上?

python - 属性错误: module 'statsmodels' has no attribute 'datasets'

python - 使用 scipy/simplex 进行线性优化不能提供最佳效果

python - 游戏错误 : mixer system not initialized

python - 如何查找 Python ctypes 库中的泄漏

java - 如何将 .wav 文件转换为 float 组(编辑 float 组,例如添加两个信号)并返回到 .wav 文件而不使用白噪声

python - 如何在移动设备上运行 python 代码

algorithm - 哪种音频编解码器 G.722 或 G.726 提供更高的稳定性和更低的延迟?

python - 如何使用箭头键使 Python 中的菜单可导航