我的数据流包含时间戳和与之对应的值
$results = $this->get_events_for_export();
$month_isset = [];
foreach ($results as $result) {
$date = strtotime($result['event_date']);
$month_group = date('M', $date);
$year_group = date('Y', $date);
if (!isset($month_isset[$year_group][$month_group]))
{
$month_isset[$year_group][$month_group] = [];
}
else
{
$month_group = '';
}
$section->addText($month_group ."\t". date('d', $date) ."\t". date('D', $date) ."\t". htmlentities($result['event_title']), null, $event_lists);
}
我需要采用10个元素的移动平均线。我一直在探索带有函数的foreachRDD选项,但在浏览spark文档后却没有成功,但找不到任何明确的指针。
答案 0 :(得分:0)
假设您的数据位于元组D
的{{1}}列表中。 10个元素的移动平均值(与时间戳无关)就是这个,使用numpy命令mean():
(time,value)
此函数将返回一个列表import numpy as np
def mov_avg(D):
avg_list = []
Dval = [item[1] for item in D] #extracts the values from D, ignoring time stamp
L = len(D)
for i in range(L):
if i<10:
l = Dval[:i+1]
M = np.mean(l)
avg_list.append(M)
else:
l = Dval[i-9:i+1]
M = np.mean(l)
avg_list.append(M)
return avg_list
,avg_list
是数据avg_list[j]
的10个值的平均值,包括D
值。因此,如果我们设置j+1
,那么A = mov_avg(D)
将是A[12]
的值3到12(这是10个元素,如果我们包含3和12)的平均值,而D
将是A[6]
的0到6的平均值。
可能有一个预先存在的命令,但是这就是你编码的方式。