如何根据时间戳值计算子列表的平均值
How to calculate average of sub-lists based on Timestamp values
我有 2 个列表。第一个列表是测量数据时的时间戳(秒)。第二个列表包含数据。
我想每 10 秒计算一次数据的平均值。请注意,两个连续数据点之间的时间戳不是固定的。
示例:
Timestamp = [2, 5, 8, 11, 18, 23, 25, 28]
Data = [1, 2, 3, 4, 5, 6, 7, 8]
预期输出应该是:
Output = [average of [1,2,3] , average of [4,5] , average of [6,7,8]]
我想知道 Python 中是否有任何内置函数可以自动执行平均if分析。
感谢您的帮助。
您可以为此使用数学函数 floor
和 defaultdict
as
from collections import defaultdict
from math import floor
timestamp = [2, 5, 8, 11, 18, 23, 25, 28]
data = [1, 2, 3, 4, 5, 6, 7, 8]
average_dc= defaultdict(list)
for t, d in sorted(zip(timestamp, data), key=lambda x : x[0]):
average_dc[math.floor(t / 10)].append(d)
averages = [sum(i)/ len(i) for i in average_dc.values()]
输出
[2.0, 4.5, 7.0]
sorted(zip(timestamp, data), key=lambda x : x[0])
会将 timestamp
值与 data
中的值连接在同一索引上,然后 for 循环将插入到 average_dc
相关的 data
值基于相关 timestamp
值。
在最后一行,列表理解将遍历 average_dc
中的每个列表并计算它的平均值。
我有 2 个列表。第一个列表是测量数据时的时间戳(秒)。第二个列表包含数据。
我想每 10 秒计算一次数据的平均值。请注意,两个连续数据点之间的时间戳不是固定的。
示例:
Timestamp = [2, 5, 8, 11, 18, 23, 25, 28]
Data = [1, 2, 3, 4, 5, 6, 7, 8]
预期输出应该是:
Output = [average of [1,2,3] , average of [4,5] , average of [6,7,8]]
我想知道 Python 中是否有任何内置函数可以自动执行平均if分析。
感谢您的帮助。
您可以为此使用数学函数 floor
和 defaultdict
as
from collections import defaultdict
from math import floor
timestamp = [2, 5, 8, 11, 18, 23, 25, 28]
data = [1, 2, 3, 4, 5, 6, 7, 8]
average_dc= defaultdict(list)
for t, d in sorted(zip(timestamp, data), key=lambda x : x[0]):
average_dc[math.floor(t / 10)].append(d)
averages = [sum(i)/ len(i) for i in average_dc.values()]
输出
[2.0, 4.5, 7.0]
sorted(zip(timestamp, data), key=lambda x : x[0])
会将 timestamp
值与 data
中的值连接在同一索引上,然后 for 循环将插入到 average_dc
相关的 data
值基于相关 timestamp
值。
在最后一行,列表理解将遍历 average_dc
中的每个列表并计算它的平均值。