Gnocchi: 6、基于gnocchi的时间序列算法demo实现

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File    : scipy_demo.py
# @Software: PyCharm

'''
参考: 
https://github.com/gnocchixyz/gnocchi/tree/3.1.4

模拟gnocchi聚合的思路进行聚合的demo
gnocchi聚合算法:
步骤1:对时间序列ts的索引ts.index用采样间隔进行分组得到indexes
步骤2:对分组后的索引indexes通过numpy.unique重计算得到uniqeIndexes
步骤3:调用ndimage.mean方法,进行如下操作
ndimage.mean(ts.value , labels=indexes, index=uniqueIndexes)
即可得到聚合结果aggregatedValues
步骤4: 将uniqueIndexes还原为datetime64[ns]类型的numpy数组
timestamps
步骤5: 重新用步骤3得到的aggregatedValues和步骤4得到的timestamps
构建新的时间序列,该时间序列即为最终聚合的时间序列newTimeSerie
步骤6:根据需要保存的点的个数n,进行切片处理,获取newTimeSerie[-n:]
作为最终保存的时间序列的结果


解释:
scipy.ndimage.measurements.mean(input, labels=None, index=None)[source]
功能:计算数组在labels处的平均值
参数: 
input:数组,
labels:类似数组,可选的。对应每个元素有一个标签
标签数组的一些性状,或者。
所有共享相同label的区域的元素会被用于计算平均值。
index:需要计算的区域
返回值:列表




分析分组的算法:
 (a // b) * b:这个操作的含义获取能够被b整除且最接近a的数
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值