我想计算一段时间内某个信号的聚合平均值。我不知道这在科学上是怎么称呼的。
示例:我以 15 分钟的值计算一整年的用电量。我想知道我一天中每小时的平均消耗量(24 个值)。但它更复杂:在 15 分钟的步骤之间有更多的测量值,我无法预测它们在哪里。但是,应该考虑到它们,并使用正确的“重量”。
我写了一个有效的函数,但它非常慢。这是一个测试设置:
import numpy as np
signal = np.arange(6)
time = np.array([0, 2, 3.5, 4, 6, 8])
period = 4
interval = 2
def aggregate(signal, time, period, interval):
pass
aggregated = aggregate(signal, time, period, interval)
# This should be the result: aggregated = array([ 2. , 3.125])
aggregated
应该有period/interval
价值观。这是手动计算:
aggregated[0] = (np.trapz(y=np.array([0, 1]), x=np.array([0, 2]))/interval + \
np.trapz(y=np.array([3, 4]), x=np.array([4, 6]))/interval) / (period/interval)
aggregated[1] = (np.trapz(y=np.array([1, 2, 3]), x=np.array([2, 3.5, 4]))/interval + \
np.trapz(y=np.array([4, 5]), x=np.array([6, 8]))/interval) / (period/interval)
最后一个细节:它必须高效,这就是为什么我自己的解决方案没有用。也许我忽略了一个 numpy 或 scipy 方法?或者这是熊猫可以做的事情吗?非常感谢你的帮助。